我想要实现的目标:
目前,我有一个UIImagePickerController设置拍照,并将其作为小尺寸照片(大约300 x 500像素)返回。
默认情况下,从图像选取器获得的图像是全分辨率 - 即非常大。所以在对这张图片做任何事情之前,我会调整它的大小:
UIGraphicsBeginImageContext(targetSize);
CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = thumbnailPoint;
thumbnailRect.size.width = scaledWidth;
thumbnailRect.size.height = scaledHeight;
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
-
什么行不通:
此步骤非常耗费资源,实际上它会在应用程序运行期间冻结应用程序几秒钟。我没有在iPhone 4上试过它,但我可以想象只有高清图像会更糟糕。
除了资源密集之外,获取此照片似乎也会在很短的时间内耗尽大量内存,通常会导致应用崩溃。我假设这个记忆来自最初捕获的大尺寸图像。
-
所以:
从UIImagePicker获取小图片的最佳/标准方法是什么?我不希望我的应用程序因CPU或RAM使用率过高而冻结或崩溃。当然必须有更好,更稳定和有效的方式吗?
非常感谢任何帮助:)
答案 0 :(得分:3)
你可能会发现Trevor的UIImage类别对于正确调整图像大小而不是重新发明轮子非常有用。这就是我使用的东西,效果很好。
Resize a UIImage the right way
至于性能问题,你可以在后台调用你的resize方法,或者把它放在一个操作中来释放你这个工作的主线程。