2013-03-27 6 views
8

13.3MBイメージを取り込み、XCodeに追加しました。私はコンパイル時に、XCodeがファイルサイズを小さくするためのいくつかのトリックを実行することを認識しています。私はイメージが今データに変換された後、いかに大きなテストするために、これをしなかった:不正確なNSDataサイズはバイト単位で指定されています

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

私が得た長さが戻って26758066ました。それがバイトであれば、それは26.7MBと私に読まれます。イメージはどのように突然大きくなっていますか?最初にUIImageを通過することなく、データ形式で画像を取得する別の方法はありますか?

EDIT:さらにテストは、これが機能することを明らかにし、〜13.3メガバイトのデータ長を引き出す - 予想額:

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

イメージのNSDataを使用する特別な理由はありますか? –

+1

あなたの質問に答えた場合は、答えを作成して正しいものとしてマークしてください。 –

+0

@ NathanWhite 1.テストアプリケーションでメモリ使用量をテストできるようにNSDataが必要です。 2.最初の質問はまだ残っています - UIImageJPEGRepresentationが最初のサイズの2倍の画像を返すのはなぜですか? – Andrew

答えて

7

何あなたのコードがやっていることはメモリに画像を解凍して、として再圧縮されますJPEG、最高品質の比率(q=1.0)です。そういうわけで、イメージが突然大きくなるのです。

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

関連する問題