2016-11-15 55 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)) 
} 

最佳规模将可能取决于您的需求,为什么你遇到崩溃。