我有一个非常奇怪的问题...... 在我的iPhone应用程序中,用户可以在相机胶卷中打开图像,在我的示例中 壁纸1920 x 1080像素(72 dpi)。
现在,想要将图像的大小调整为例如1024 px:
+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSLog(@"New image has w=%f, h=%f", newImage.size.width, newImage.size.height);
return newImage;
}
使用我可以检查的日志消息,宽度为1024,高度为576.一切都很好!
但现在,我将图像保存在Documents文件夹中:
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/%@.jpg", uniqueId]];
[UIImageJPEGRepresentation(originalImage, 1.0) writeToFile:jpgPath atomically:YES];
现在有一种非常奇怪的效果:
a)当我使用Retina模拟器时,保存的图像位于“/Users/[...]/Library/Application Support / iPhone Simulator / 5.1 / Applications / [。。] / Documents /”,大小为1, 5 MB,分辨率为2048 x 1152 px,144(!)dpi。
b)当我使用普通模拟器时,大小为441 KB,分辨率为1024 x 768 px,72 dpi。
如何以72 dpi的力量保存UIImage?
答案 0 :(得分:3)
ARGHHHH !!!
我明白了......
UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0);
“1.0”而不是“0.0”!
第3个参数是应用于位图的比例因子。如果指定值0.0,则比例因子将设置为设备主屏幕的比例因子。