アプリの遅延を防ぐために、1 MB を超える画像を圧縮しようとしています (ほとんどの場合、iPhone の通常のカメラで撮影した写真用です。
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
NSData *imageSize = UIImageJPEGRepresentation(image, 1);
NSLog(@"original size %u", [imageSize length]);
UIImage *image2 = [UIImage imageWithData:UIImageJPEGRepresentation(image, 0)];
NSData *newImageSize = UIImageJPEGRepresentation(image2, 1);
NSLog(@"new size %u", [newImageSize length]);
UIImage *image3 = [UIImage imageWithData:UIImageJPEGRepresentation(image2, 0)];
NSData *newImageSize2 = UIImageJPEGRepresentation(image3, 1);
NSLog(@"new size %u", [newImageSize2 length]);
picView = [[UIImageView alloc] initWithImage:image3] ;
ただし、取得した NSLog は、次の行に沿って何かを出力します
original size 3649058
new size 1835251
new size 1834884
1回目と2回目の圧縮の差はほとんどありません。私の目標は、画像サイズを 1 MB 未満にすることです。私は何かを見落としましたか/これを達成するための代替アプローチはありますか?
編集:可能であれば、画像の高さと幅のスケーリングを避けたいです。