JavaでPNGをJPEG画像ファイルに変換する
画像ファイルをPNGからJPEGに変換すると、品質の低下が予想されます。どちらも異なる形式であるため、PNGの一部の効果がJPEG画像ファイルに存在しない場合があります。 たとえば、PNGの透明な背景はJPEG画像ファイルではサポートされていませんが、詳細についてはGoogleがサポートしています。
例
背景が透明なPNGファイルを背景が白いJPEG画像に変換するJavaの例を次に示します。
ファイル:javanullpointer.png、4kb
以下のコードを実行します。
package com.example; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class ConvertImageFile { public static void main(String[] args) { BufferedImage bufferedImage; try { //read image file bufferedImage = ImageIO.read(new File("c:\\javanullpointer.png")); // create a blank, RGB, same width and height, and a white background BufferedImage newBufferedImage = new BufferedImage(bufferedImage.getWidth(), bufferedImage.getHeight(), BufferedImage.TYPE_INT_RGB); newBufferedImage.createGraphics().drawImage(bufferedImage, 0, 0, Color.WHITE, null); // write to jpeg file ImageIO.write(newBufferedImage, "jpg", new File("c:\\javanullpointer.jpg")); System.out.println("Done"); } catch (IOException e) { e.printStackTrace(); } } }
出力
白い背景の新しいjpgファイルが生成されます。
ファイル:javanullpointer.jpg、9kb
Note
このコードはいくつかのPNG画像ファイルでテストされており、変換されたJPEG画像ファイルは許容できる品質です。