11

次のように、アプリの Documents ディレクトリに .jpg ファイルを書き込んでいます。

NSData *img = UIImageJPEGRepresentation(myUIImage, 1.0);
BOOL retValue = [img writeToFile:myFilePath atomically:YES];

後で、次を使用してその画像を UIImage に読み込みます。

UIImage *myImage = [UIImage imageWithContentsOfFile:path];

表のセルに画像を描画でき、問題ないので、うまくいくことはわかっています。UIImageJPEGRepresentation(myImage, 1.0) を使用しようとすると、デバッガーは次の行を出力します。

<Error>: Not a JPEG file: starts with 0xff 0xd9
<Error>: Application transferred too few scanlines

関数は nil を返します。なぜこれが起こるのか誰にも分かりますか?ロードされた後、UIImage データを操作するために何もしていません。セル内の画像ビューに UIImage を提供しました。セル内のすべての画像が整列して同じサイズになるように画像ビューのプロパティを設定しましたが、UIImage を NSData に変換できることとは関係ないと思います。

4

1 に答える 1

21

画像が乱れることもなく、正しく表示できました。この問題は、UIImage のバグである可能性があります。または、ドキュメントで imageWithContentsOfFile: の使用についてより明確にする必要があります。

変更することでエラーメッセージをなくすことができました

UIImage *myImage = [UIImage imageWithContentsOfFile:path];

NSData *img = [NSData dataWithContentsOfFile:path];
UIImage *photo = [UIImage imageWithData:img];
于 2011-04-25T16:47:11.140 に答える