2012-10-20 100 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,則縮放係數將設置爲設備主屏幕的縮放係數。