我的应用程序的一个核心功能是用户可以使用自己的图像。 但图像大小应限制在一定的大小。例如,用户不应该被允许在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/ –