2011-04-07 93 views
1

我想要实现:iPhone:从问题调整的UIImagePickerController图像

目前,我有一个的UIImagePickerController设置拍照,并返回它作为一个小型照片(约300×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使用而冻结或崩溃。当然必须有更好,更稳定和有效的方式?

任何帮助是非常赞赏:)

回答

3

您可能会发现调整图像以正确的方式,而不是重新发明轮子有用Trevor的UIImage的类别。这就是我使用的,它的效果很好。

Resize a UIImage the right way

至于性能问题,您可以打电话给你的大小调整方法的背景下,或把它放在一个操作来释放你这项工作的主线。

+0

嗨,谢谢你的回答。我只是尝试了调整大小的代码,但它似乎没有比以前更快。 – 2011-04-07 12:04:14

+0

您可以在后台调用您的resize方法,或将其放入操作中以释放此作品的主线程。 – scalbatty 2011-04-07 12:25:53

+0

我希望不必这样做,否则我不能直接显示图片(没有加载图标等)。这是我最终做的,但:) – 2011-04-12 07:47:56