2013-06-03 9 views
17

私はAndroid Bitmapsを少しお手伝いしていますが、PNG圧縮には最高品質のJPEGよりもはるかに時間がかかることがわかりました。はるかに多く。私のデバイスでは、1に比べて約10秒までになることがあります。PNG圧縮がAndroidのJPEGよりもずっと遅いのはなぜですか?

AFAIK、PNGは、基本的には、deflateで圧縮されたピクセルのフィルタリングされた文字列です。さて、各文字列に最適なフィルタを見つけるのは時間がかかる作業ですが、速度と圧縮の有効性の間に妥協が見られるかもしれません。それはJPEGよりも遅くすべきではありません。どうしたの?

多分それは逆です。 Androidに超高速JPEGを実装していますか?

UPDATE:私は本当にただ

mBitmap.compress(CompressFormat.JPEG, 100, stream); 

mBitmap.compress(CompressFormat.PNG, 100, stream); 
+1

圧縮方法を示すコードを入力する必要があります。 –

+21

JPEGはハードウェアアクセラレーションが可能で、PNGは常にソフトウェアで実行されます。 JPEGは処理に一定の時間を要します。 PNGのエンコードとデコーディングの90%以上がフラットコーデックで費やされています。フィルタリングには些細な時間がかかります。最高の品質レベルでの収縮は、最良の圧縮を得るために複数の方法を試みるため、長い時間がかかります。 – BitBank

+0

実際、SkiaはJPEGハードウェアアクセラレーションをサポートしています。エミュレータで自分のコードをチェックしてください。パフォーマンスのギャップが小さくなると、それはそれでなければなりません。 – akalenuk

答えて

5

のようなものを行う、私ははるかに大きな絵をエミュレータ上で私のプロジェクトをテストしてみたPNGの圧縮が少し遅かったものの、ノーがありましたパフォーマンスの抜本的な違い。したがって、BitBankのコメントで述べたように、ハードウェアアクセラレーションが原因であるはずです。

関連する問題