Image transcoding (JPEG to PNG) with Java

31,421

Solution 1

ImageIO can be used to load JPEG files and save PNG files (also into a ByteArrayOutputStream if you don't want to write to a file).

Solution 2

This is what I ended up doing, I was thinking toooo far outside of the box when I asked the question..

// these are the imports needed
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import java.io.ByteArrayOutputStream;

// read a jpeg from a inputFile
BufferedImage bufferedImage = ImageIO.read(new File(inputFile));

// write the bufferedImage back to outputFile
ImageIO.write(bufferedImage, "png", new File(outputFile));

// this writes the bufferedImage into a byte array called resultingBytes
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, "png", byteArrayOut);
byte[] resultingBytes = byteArrayOut.toByteArray();

Solution 3

javax.imageio should be enough. Put your JPEG to BufferedImage, then save it with:

File file = new File("newimage.png");
ImageIO.write(myJpegImage, "png", file);
Share:
31,421
Abhishek Yadav
Author by

Abhishek Yadav

Updated on July 09, 2020

Comments

  • Abhishek Yadav
    Abhishek Yadav almost 4 years

    In my Java application I would like to download a JPEG, transfer it to a PNG and do something with the resulting bytes.

    I am almost certain I remember a library to do this exists, I cannot remember its name.

  • clay
    clay over 7 years
    Code example was helpful here. Glad to not to write out to a new file.
  • Cardin
    Cardin almost 6 years
    This answer doesn't match the question. OP asked for JPG to PNG, not the other way round...