我的應用程序的一個核心功能是用戶可以使用自己的圖像。 但圖像大小應限制在一定的大小。例如,用戶不應該被允許在imageView中加載全景照片。限制這個的最好方法是什麼?爲UIImageView禁用大UIImage
我應該在imagePickerController之後執行if語句嗎?那麼最好的最大尺寸是多少?
我的應用程序的一個核心功能是用戶可以使用自己的圖像。 但圖像大小應限制在一定的大小。例如,用戶不應該被允許在imageView中加載全景照片。限制這個的最好方法是什麼?爲UIImageView禁用大UIImage
我應該在imagePickerController之後執行if語句嗎?那麼最好的最大尺寸是多少?
您可以檢查image.size
屬性,然後針對該屬性執行計算以檢查過大的大小或不支持的比率。例如,全景圖像傾向於具有2,3或甚至4: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))
}
最佳規模將可能取決於您的需求,爲什麼你遇到崩潰。
您可以輕鬆地將您的imageView contentMode設置爲aspectSizeToFit或Fill。這種方式您不必擔心圖像大小限制? – Joe
不,我必須稍後再做一些記憶強化工作,如果圖像很大,它會與信號9崩潰。 – rotr
爲什麼不在圖像視圖的實際大小上下采樣,然後再將其分配給圖像視圖;那麼你在內存中不會有任何額外的像素。 http://nshipster.com/image-resizing/ –