我正在尝试在后台线程上调整图像大小,并且应用程序总是在出现一些低内存警告后崩溃。如何重写下面的代码来解决这个问题?
float max = 1024*1024;
NSData *pngData = UIImagePNGRepresentation(setImage);
while ([pngData length] > max) {
pngData = nil;
CGSize newSize = CGSizeMake(setImage.size.width*.9, setImage.size.height *.9);
UIGraphicsBeginImageContext(newSize);
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSLog(@"scale: %f", (1024.0*1024.0)/((float)[pngData length]));
pngData = UIImagePNGRepresentation(image);
}
NSLog(@"image length: %i",[pngData length]);
[pngData writeToFile:imageLocation atomically:YES];
我已经尝试通过计算比例并用比例值替换代码中的 .9 来做到这一点
float scale = (max)/((float)[pngData length]);
CGSize newSize = CGSizeMake(setImage.size.width*scale, setImage.size.height *scale);
这使得图像太小。
最终目标是从相机中获取图像并将其保存到磁盘。我最初不得不调整图像大小,因为在加载图像时收到“内存不足警告”。