PNGをJavaのJPEG画像ファイルに変換する

JavaでPNGをJPEG画像ファイルに変換する

画像ファイルをPNGからJPEGに変換すると、品質の低下が予想されます。どちらも異なる形式であるため、PNGの一部の効果がJPEG画像ファイルに存在しない場合があります。 たとえば、PNGの透明な背景はJPEG画像ファイルではサポートされていませんが、詳細についてはGoogleがサポートしています。

背景が透明なPNGファイルを背景が白いJPEG画像に変換するJavaの例を次に示します。

ファイル:javanullpointer.png、4kb

png file with transparent background

以下のコードを実行します。

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

jpg file with white background

Note
このコードはいくつかのPNG画像ファイルでテストされており、変換されたJPEG画像ファイルは許容できる品質です。