2017-12-21 5 views
-1

이미지를 내 서버에 업로드하려고하지만 업로드하기 전에 올바른 형식인지 여부를 확인해야합니다.신속하게 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) 
+0

관련없는 시도 할 수 있습니다. 로 시작하려면'URL'을 사용하십시오. 그리고 NSData도 마찬가지입니다. 그냥'데이터'를 사용하십시오. – rmaddy

+0

게시 한 코드는 'UIImage' (유형이 없음)에서 이미지 유형을 결정하려는 시도가 없음을 보여줍니다. – rmaddy

+0

UIImage에서 파일 확장명을 확인할 수없는 경우 이미지 형식을 확인할 수있는 대안이 있습니까? – Alexa289

답변

2

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) 
    { 

     let assetPath = info[UIImagePickerControllerReferenceURL] as! NSURL 
     if (assetPath.absoluteString?.hasSuffix("JPG"))! { 
      print("JPG") 
     } 
     else if (assetPath.absoluteString?.hasSuffix("PNG"))! { 
      print("PNG") 
     } 
     else if (assetPath.absoluteString?.hasSuffix("GIF"))! { 
      print("GIF") 
     } 
     else { 
      print("Unknown") 
     } 
    } 
+0

사용자가 카메라에서 이미지를 선택하면 어떻게됩니까? 카메라 입력 앱의 경우 'info [UIImagePickerControllerReferenceURL] as! NSURL' – Ameer

1

같이있는 UIImage에서, 다음 서버에 THAT을 보낼 수 있습니다. 이 데이터는 각각 PNG 또는 JPEG 형식으로 표시됩니다. URL``에 캐스팅 한 후`NSURL`를 사용에 아무 소용이 없다가

관련 문제