また、帯域幅の観点から、どの方法(jpeg、png、gif)で圧縮するのが最適ですか?
3 に答える
使用する形式:
- JPG/JPEGは非可逆圧縮です。詳細が失われます。(品質レベルは制御可能であり、役立ちます)
- GIFは可逆圧縮ですが、8 ビット色空間への変換により、多くの画像、特に自然な画像が歪んでしまいます。
- PNGは可逆圧縮です。
PNG を使用しないやむを得ない理由がない限り、PNG を使用することをお勧めします。詳細
同じ画像でも異なる形式を使用すると、通常、画質は画像サイズにほぼ反比例します。PNG の使用をお勧めします。PNG が大きすぎる場合は、JPEG を使用してください。PNG には、透過性をサポートするという利点もあります。
GIF は、アイコンやタイポグラフィなど、コンピューターで生成された小さな画像にのみ適しています。上記のリンクには、画像サイズの比較も含まれています。
いつものように、最善のテストは、アプリケーションですべてを試して比較することです。ただし、そのような分析の戻り値が最小限であるほとんどの状況では、PNG が妥当なデフォルトです。
JPEG、PNG、または GIF の作成:
実際にJavaからJPEG、PNG、またはGIFを作成する限りBufferedImage
。Sun/Oracle のこのチュートリアルをチェックしてください。役立つコンテンツがたくさんあります。最後のセクションでは、JPEG、PNG、GIF の作成について明確に説明しています。これは、上記のリンクされたチュートリアルからの変更されたスニップです。
try {
BufferedImage bufImg = getBufferedImage(); //get BufferedImage from your code...
File fout = new File("saved.png");
ImageIO.write(bufImg, "png", fout);
} catch (IOException e) {
//handle exception...
}
圧縮は、さまざまなファイル形式自体 (JPEG、PNG、GIF など) によって処理されます。
「帯域幅の点で最高」は、画像自体のサイズと内容に応じて、完全に主観的な質問です。
たとえば、色数が少なく、「平滑化」がほとんど行われていない小さな画像 (ピクセル グラフィックなど) は、PNG および GIF 形式でうまく機能します。多くの色と多くのスムージングを含む大きな画像 (写真など) はJPEGの方が適しています。その形式では、エンコード中の圧縮/品質も制御できます。
JPEGの可能性が高いです。デフォルトの 75% 圧縮ですが、品質が不足しています。
品質が必要な場合: png を使用します。透明度が得られますが、これは jpg ではサポートされていません。PNG の品質も 100% と表示されます。優れた品質が必要で、ファイルサイズが小さい場合は、いつでも png を使用して、ファイルの base-64 に似た圧縮タイプを使用できます。次に、それを解凍して画像を保存します。画像の保存に使用するメモリ量は少なくなりますが、効果的に品質をそのまま維持することができます。