3

ユーザーが画像を選択できるという要件がありcamera roll、アプリケーションは画像を最適化してサーバーにアップロードする必要があります。ALAssetsユーザーがから写真を選択するためのライブラリとカスタムピッカーを使用していますcamera roll。これを完全に達成することはできますが、ファイルサイズが大きくなるという問題があります。

問題は次のとおりです。
ユーザーが 1.7MB の写真を選択すると (これは、iOS写真をメールで送信しようとしたときに によって報告されたフル サイズです)、その からバイトを直接取得ALAssetRepresentationALAssetNSData、データのサイズも1.7MBです。ALAssetRepresentationしかし、次のコードを使用して UIImage を取得すると..

UIImage *selImage = [UIImage imageWithCGImage:[assetRepresentation fullResolutionImage] scale:[assetRepresentation scale] orientation:[assetRepresentation orientation]];

圧縮品質 = 1.0f で使用するように変換するとUIImage、NSData のサイズは元のサイズ (3.2MB) のほぼ 2 倍になります。NSDataUIImageJPEGRepresentation()

理想的には 1.7MB だけであるべきではありませんか??

予想どおり、ファイルに保存すると、ファイル サイズは 3.2MB のままです (サンドボックス アプリのドキュメント フォルダーをインポートして、xcode 4.2 を使用して確認しました)。しかし興味深いのはPreview、Mac でファイルを開いてバイト サイズを確認すると、1.7MB (以前は 3.2 MB) と表示されていて、かなり紛らわしいことです..

助けてください..

前もって感謝します。

4

1 に答える 1

1

どの圧縮品質を指定していますか? これは元の画像で使用されたものと同じですか、それとも異なりますか? 異なる場合は、同じ圧縮率で試してみて、サイズが同じかどうかを確認してください。

NSData * UIImageJPEGRepresentation (
   UIImage *image,
   CGFloat compressionQuality
);
于 2012-07-16T08:58:54.710 に答える