내 코드에서 언 래핑을 줄이려고하지만 때로는 if let
체크가 필요하지 않은지보고 싶지도 않습니다.UIImagePickerController의 이미지에 CGImage 값이 없을 수 있습니까?
사용자가 자신의 카메라로 사진을 찍거나 전화 라이브러리에서 사진을 찍고 코드를 잘라내어 압축하는 코드의 특정 부분에 많은 힘이 없어졌습니다. 이것은 모든 힘으로 프로세스가 언랩입니다 :
나는
imagePickerController(picker: didFinishPickingMediaWithInfo:)
함수에서 포장을 벗긴 이미지를 강제로 : 나는imagePicker.mediaTypes = [kUTTypeImage as String]
이 있기 때문에let pickedImage = info[UIImagePickerControllerOriginalImage] as! UIImage`
나는 이것에 대해 꽤 안심.
이미지를 자르려면
CGImageCreateWithImageInRect
을 사용하고 첫 번째 매개 변수는CGImage
입니다. 이것이 내가 생각한 가장 큰 가정이며 충돌은 한번도 없었지만 여전히 안전하지 않다는 것을 알고 있습니다.let cgImage = CGImageCreateWithImageInRect(pickedImage.CGImage!, cropRect) let croppedImage = UIImage(CGImage: cgImage)
나는
NSData
을 반환UIImageJPEGRepresentation
를 사용하지만 이미지가 더CGImageRef
가없는 경우nil
를 반환 할 수 있습니다. 나는 이전의 가정에 기초하여 그것을 풀도록 강요한다. 내가jpegData
이nil
하지 가정 때문에let jpegData = UIImageJPEGRepresentation(croppedImage, 0.85)
은 다시 풀기 힘에 의해 결과 이미지를 만들 수 있습니다.
let resultImage = UIImage(data: jpegData)!
TLDR : 그것은 UIImagePickerController
더 CGImage
이없는 이미지를 반환 할 수 있습니까? 예인 경우 1 단계와 2 단계 사이에 수표를 추가하여 CGImage
값이 있는지 확인합니다. 여전히 안전하게 다른 단계의 포장을 풀 수 있습니까?
당신이'pickedImage' 객체에 데이터를 받고 있습니까? – CodeChanger
@CodeChanger 위에서 언급 한 모든 코드 (지금까지). 나는 미래의 잠재적 문제를 피하기 위해 그것을 수정하려하고있다. 즉, 예, 데이터를 pickedImage로 가져옵니다. – budidino