8

13.3MB のイメージを取得し、XCode に追加しました。コンパイル時に、XCode がファイル サイズを小さくするためにいくつかのトリックを実行することは承知しています。データに変換した後の画像の大きさをテストするために、これを行いました。

UIImage *image = [UIImage imageNamed:@"image.jpg"];
NSData *data = UIImageJPEGRepresentation(image, 1.0);
NSLog(@"length: %i", data.length);

返ってきた長さは26758066. それがバイト単位の場合、26.7MB と表示されます。画像が急に大きくなったのはどうしてですか?最初に UIImage を経由せずにデータ形式で画像を取得する別の方法はありますか?

編集:さらにテストすると、これが機能することが明らかになり、データ長が約13.3MBになりました-予想される量:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSLog(@"length: %i", data.length);
4

1 に答える 1

7

コードが行っていることは、画像をメモリに解凍してから、最高の品質比 ( q=1.0) で JPEG として再圧縮することです。そのため、画像が突然大きくなります。

リソース バンドルに保存されているファイルを調べたい場合は、ファイルNSBundleのフル パスを要求し、 を使用NSFileManagerしてファイル サイズを読み取ります。Mac で同じことを手動で行うことができBUILD_PRODUCTS_DIRます。プロジェクトの を参照してください。

于 2013-03-27T10:22:37.687 に答える