2012-10-20 130 views
2

我有一个非常奇怪的问题... 在我的iPhone应用程序,用户可以打开一个图像从相机胶卷,在我的例子中,一个 壁纸1920 x 1080像素(72 dpi)。保存UIImage与72 dpi(视网膜模拟器保存144 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.一切都很好!

但现在,我保存在文件夹中的图片:

NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/%@.jpg", uniqueId]]; 
[UIImageJPEGRepresentation(originalImage, 1.0) writeToFile:jpgPath atomically:YES]; 

现在一个很奇怪的效果:
一)当我使用的Retina模拟器,保存的图像在“/用户/ [ ...]/Library/Application Support/iPhone Simulator/5.1/Applications /[...]/ Documents /“的大小为1.5 MB,分辨率为144(!)dpi时的分辨率为2048 x 1152像素。

b)当我使用标准模拟器时,尺寸为441 KB,分辨率为72 dpi时的1024 x 768像素。

如何强制保存72 dpi的UIImage?

回答

3

ARGHHHH !!!

我知道了......

UIGraphicsBeginImageContextWithOptions(newSize, NO, 1.0); 

“1.0”,而不是 “0.0”!

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