我想调整后台线程上的图像大小,并且应用程序总是在一些低内存警告后崩溃。我如何重写下面的代码来解决这个问题?iOS更简单的方式来调整图像大小
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];
我已经尝试通过计算规模这样做的,带有刻度值
float scale = (max)/((float)[pngData length]);
CGSize newSize = CGSizeMake(setImage.size.width*scale, setImage.size.height *scale);
本作的图像太小更换1.9英寸的代码。
最终目标是从相机拍摄图像并将其保存到磁盘。我原本不得不调整图像大小,因为我在加载图像时收到了“低内存警告”。
看看接受这个问题的答案http://stackoverflow.com/questions/ 12773074/received-memory-warning-on-setimage –