iPhone:从UIImagePickerController调整图像大小的问题

时间:2011-04-07 11:40:11

标签: iphone objective-c camera uiimagepickercontroller

我想要实现的目标:

目前,我有一个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使用率过高而冻结或崩溃。当然必须有更好,更稳定和有效的方式吗?

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:3)

你可能会发现Trevor的UIImage类别对于正确调整图像大小而不是重新发明轮子非常有用。这就是我使用的东西,效果很好。

Resize a UIImage the right way

至于性能问题,你可以在后台调用你的resize方法,或者把它放在一个操作中来释放你这个工作的主线程。