以72 dpi保存UIImage(Retina模拟器以144 dpi保存)

时间:2012-10-20 13:29:25

标签: iphone ios uiimage

我有一个非常奇怪的问题...... 在我的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?

1 个答案:

答案 0 :(得分:3)

ARGHHHH !!!

我明白了......

UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0);

“1.0”而不是“0.0”!

第3个参数是应用于位图的比例因子。如果指定值0.0,则比例因子将设置为设备主屏幕的比例因子。