2011-12-15 24 views
0

スケールで画像を描こうとすると、私は問題が発生しました:1280 * 768、そのフォーマットはPNGで、サイズは約3.26 MBですが、JPEGに変換すると226KBになります。スローネスの問題は消えた!! 、サイズが大きい画像を描画すると、Javaで遅いの原因は何ですか?

私の質問は、大きなサイズのバッファリングされたイメージを描画しようとすると、なぜ遅くなったのですか?画像のJavaハンドルの小さなサイズのみまたは何ですか?

+3

PNGまたはJPEG(画像のシリアライズされたフォーマットのみ)を「描画」しません。しかし、イメージは若干異なってロードされている可能性があります(または異なる速度で読み込むことができます:はるかに大きいPNGは、より小さなJPGよりも読み込みに時間がかかることが予想されますが、実際のイメージ描画速度は、非blt可能な形式のバッファのように)。 「遅い」シナリオと「遅い」シナリオのサンプルテストケースがありますか? –

+0

画像の寸法をJPEGに変換したときに縮小した場合は、注釈を付けることもできます。 –

答えて

1

イメージをJPEGに縮小すると、イメージデータの一部が失われ、ファイルが短くなります。

短いファイルを読むのにかかる時間が短くなります。 および3.26 MB > 226 KB

元のファイルが大きすぎるため、すべてのピクセルが表示されるわけではありませんが、JPEGに変換すると品質が低下するため、画面に違いが表示されないことがあります。

画像のファイル形式については、このサイトをチェックしてください:あなたはまた、画像の描画にこのウェブサイトで見ることができGIF's, PNG's, or JPEG's?

EDIT:http://www.kitfox.com/javaOne2007/javaOne-notes.pdf

あなたがBufferedImageOp内でこれを使用してjava.awt.RenderingHints.を使用してすぐに画像をレンダリングすることができますがすることができますあなたの画像はより速く読み込まれます(しかし、いくらかの品質を犠牲にして)。

私はこれが助けて欲しい!

+2

私にとって、PNGは損失の少ないイメージ形式であり、JPGは損失の多いイメージ形式です。したがって、そのサイズのために最初のインスタンス上のJPGファイルと比較してPNGファイルを「読み込む」ビットが「遅い」(同じ821x672イメージ解像度の場合、PNGでは約1040KB、JPGでは約396KB、ここでは大きな違いです)。 PNGファイルにアルファチャンネルがある場合、処理速度が大幅に遅くなります。画像のスライシングや画像ファイルの画像サブサンプリングなどの画像読み込み速度をBufferedImageやその他の画像データバッファに高速化する方法がいくつかあります。 –

+0

はい、jpeg画像の品質はpng画像の品質よりも低く、同時に私は高品質のイメージが必要です! 、javaによるpng画像の描画を高速化する方法はありますか?またはpng画像のサイズを減らす方法がある場合は、品質の損失をなくしますか? – Jason4Ever

+0

私の答えに編集をチェックしてください。 – eboix

関連する問題