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画像ファイルは許容できる品質です。