이미지를 내 서버에 업로드하려고하지만 업로드하기 전에 올바른 형식인지 여부를 확인해야합니다.신속하게 UIImage에서 이미지 확장/형식을 얻는 방법
사용자가 .jpeg 및 .png 만 원하는 경우 사용자가 휴대 전화에서 .gif 형식 이미지를 선택하면 알림이 표시됩니다.
나는 사용자 갤러리/카메라에서 이미지를 얻을 후 나는 형식을 확인하려면,하지만 난 형식을 확인하려면 어떻게 형식@IBAction func selectPictureButtonDidPressed(_ sender: Any) {
let imagePickerController = UIImagePickerController()
imagePickerController.delegate = self
imagePickerController.allowsEditing = true
let actionSheet = UIAlertController(title: "Photo Source", message: "please choose your source", preferredStyle: .actionSheet)
// action camera
let actionCamera = UIAlertAction(title: "Camera", style: .default) { (action) in
if UIImagePickerController.isSourceTypeAvailable(.camera) {
imagePickerController.sourceType = .camera
self.present(imagePickerController, animated: true, completion: nil)
} else {
self.showAlert(alertTitle: "Opppss", alertMessage: "camera can't be used/not available", actionTitle: "OK")
print("camera can't be used/not available")
}
}
// action photo library
let actionPhotoLibrary = UIAlertAction(title: "Photo Library", style: .default) { (action) in
imagePickerController.sourceType = .photoLibrary
self.present(imagePickerController, animated: true, completion: nil)
}
//action cancel
let actionCancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
actionSheet.addAction(actionCamera)
actionSheet.addAction(actionPhotoLibrary)
actionSheet.addAction(actionCancel)
self.present(actionSheet, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
postImage.image = image
picker.dismiss(animated: true, completion: nil)
doesItHasImage = true
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
picker.dismiss(animated: true, completion: nil)
}
을 확인하는 방법을 몰라?
Google에서 검색하려고했지만 URL에서 파생 된 경우 이미지 형식 만 얻습니다. 직접적으로 당신은 아마 UIImagePNGRepresentation() 또는 UIImageJPEGRepresentation()를 사용하여 원시 데이터에 이미지를 충당하기 위해 필요한이
import UIKit
import ImageIO
struct ImageHeaderData{
static var PNG: [UInt8] = [0x89]
static var JPEG: [UInt8] = [0xFF]
static var GIF: [UInt8] = [0x47]
static var TIFF_01: [UInt8] = [0x49]
static var TIFF_02: [UInt8] = [0x4D]
}
enum ImageFormat{
case Unknown, PNG, JPEG, GIF, TIFF
}
extension NSData{
var imageFormat: ImageFormat{
var buffer = [UInt8](repeating: 0, count: 1)
self.getBytes(&buffer, range: NSRange(location: 0,length: 1))
if buffer == ImageHeaderData.PNG
{
return .PNG
} else if buffer == ImageHeaderData.JPEG
{
return .JPEG
} else if buffer == ImageHeaderData.GIF
{
return .GIF
} else if buffer == ImageHeaderData.TIFF_01 || buffer == ImageHeaderData.TIFF_02{
return .TIFF
} else{
return .Unknown
}
}
}
// USAGE
let imageURLFromParse = NSURL(string : "https://i.stack.imgur.com/R64uj.jpg")
let imageData = NSData(contentsOf: imageURLFromParse! as URL)
print(imageData!.imageFormat)
관련없는 시도 할 수 있습니다. 로 시작하려면'URL'을 사용하십시오. 그리고 NSData도 마찬가지입니다. 그냥'데이터'를 사용하십시오. – rmaddy
게시 한 코드는 'UIImage' (유형이 없음)에서 이미지 유형을 결정하려는 시도가 없음을 보여줍니다. – rmaddy
UIImage에서 파일 확장명을 확인할 수없는 경우 이미지 형식을 확인할 수있는 대안이 있습니까? – Alexa289