2

アプリの遅延を防ぐために、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 未満にすることです。私は何かを見落としましたか/これを達成するための代替アプローチはありますか?

編集:可能であれば、画像の高さと幅のスケーリングを避けたいです。

4

3 に答える 3

-1

私はUIImageJPEGRepresentation(画像、0.75)の最初の実装で、サイズを変更します。たぶん、画像の幅と高さは 3 分の 2 か半分です。

于 2013-06-09T02:42:56.107 に答える