我有一个类别(在网络上找到非常受欢迎的代码)到UIImage
进行各种图像处理。
- (UIImage *)imageScaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContext(newSize);
[self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
我正在大量使用的一个方面是缩小图像。我的应用程序可以拍摄相当大的图像并将其缩小到“工作”大小。但是,仍有时候应用程序因内存崩溃。这是因为该类别会从原始图像创建新缩放图像。因此,在创建新的较小(但仍然很大)的图像时,原始的巨幅图像仍然存在。
所以,我的问题是,有没有办法加载这个大的原始图像并将其重新缩放到位?也就是说,重新缩放原始图像而不创建新图像,而不是分配更多内存?