私は本当に奇妙な問題を抱えています.私のiPhoneアプリでは、ユーザーはカメラロールから画像を開くことができます.私の例では、1920 x 1080 px (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 で、解像度は 144(!) dpi で 2048 x 1152 ピクセルです。
b) 通常のシミュレーターを使用すると、サイズは 441 KB で、解像度は 72 dpi で 1024 x 768 px です。
UIImageを72 dpiで保存するにはどうすればよいですか?