2016-11-15 53 views
0

我的應用程序的一個核心功能是用戶可以使用自己的圖像。 但圖像大小應限制在一定的大小。例如,用戶不應該被允許在imageView中加載全景照片。限制這個的最好方法是什麼?爲UIImageView禁用大UIImage

我應該在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)) 
} 

最佳規模將可能取決於您的需求,爲什麼你遇到崩潰。