2016-11-15 1 views
0

내 응용 프로그램의 핵심 기능 중 하나는 사용자가 자신의 이미지를 사용할 수 있다는 것입니다. 그러나 이미지 크기는 특정 크기로 제한되어야합니다. 예를 들어 사용자는 imageView에 파노라마 사진을로드 할 수 없습니다. 이것을 제한하는 가장 좋은 방법은 무엇입니까?UIImageView에 대해 큰 UIImages 사용 안 함

imagePickerController 뒤에 if 문을 사용해야하나요? 그리고 좋은 최대 크기는 무엇입니까?

+1

imageView contentMode를 aspectSizeToFit 또는 Fill으로 쉽게 설정할 수 있습니다.이 방법으로 이미지 크기 제한에 대해 걱정할 필요가 없습니까? – Joe

+0

아니요 나중에 메모리 집중 작업을해야하고 이미지가 커지면 신호 9와 충돌합니다. – rotr

+1

이미지를 이미지 크기의 실제 크기로 샘플링 한 다음 이미지보기; 그러면 메모리에 여분의 픽셀이 생기지 않게됩니다. http://nshipster.com/image-resizing/ –

답변

1

속성 image.size을 확인한 다음 계산을 수행하여 과도한 크기 또는 지원하지 않는 비율을 확인할 수 있습니다.

예를 들어 파노라마 이미지는 너비와 높이의 비율이 2,3 또는 4 : 1 인 경향이있어 감지하기 쉽습니다.

1

사용자가 이미지를 선택한 후에도 이미지의 크기를 조정할 수있는 UIImage 확장을 추가 할 수도 있습니다.

extension UIImage { 

    func resizeImage(_ targetSize: CGSize) -> UIImage { 

     // This is the rect that we've calculated out and this is what is actually used below 
     let rect = CGRect(x: 0, y: 0, width: targetSize.width, height: targetSize.height) 

     // Actually do the resizing to the rect using the ImageContext stuff 
     UIGraphicsBeginImageContextWithOptions(targetSize, false, 1.0) 
     self.draw(in: rect) 
     let newImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     return newImage! 
    } 
} 

사용법 : 가능성이 귀하의 요구 사항과 왜 충돌을 발생하는에 따라 달라집니다

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

    let pickedImage = info[UIImagePickerControllerEditedImage] as! UIImage 
    let resizedImage = pickedImage.resizeImage(CGSize(width: 100, height: 100)) 
} 

최적의 크기입니다.