In this article, I will show you how to write PNG images in Java. We also have a related article covering how to read PNG files in Java.
ImageIO is able to write PNG files, but it offers very little control over the PNG output and produces very large PNG files. So we will also show you our JDeli image library, which can produce much smaller PNG files.
What is PNG?
PNG stands for Portable Network Graphics. It was created as a replacement for the GIF image file format which was limited by patents owned by Unisys. PNG is a non-patented replacement. It is a raster graphics file format that supports lossless data compression. It is used widely on the world wide web as it supports transparency in browsers. PNG files use non-lossy compression and support 8 and 24-bit colors. The filename extension for PNG files is:
.png
If you are just looking for a PNG Viewer, JDeli includes a built-in Image Viewer.
How to write out an image as a PNG file in ImageIO
Step 1 Create a File (or OutputStream) object for the PNG output.
File file = new File("/path/to/outputFile.png"));
Step 2 Pass image, png type and File (or OutputStream) object into write method
ImageIO.write(bufferedImage, "PNG", file);
How to write out an image as a PNG file with JDeli
Step 1 Add JDeli to your class or module path. (download link to the trial jar).
Step 2 Create a File (or OutputStream) object
File file = new File("/path/to/outputFile.png"));
Step 3 Pass image, PNG type and File (or OutputStream) object into write method
JDeli.write(bufferedImage, "PNG", file);
In JDeli you can also use a typesafe version
JDeli.write(bufferedImage, OutputFormat.PNG, file);
or pass in a PngEncoderOptions object for more control over PNG image output such as level of Compression.
PngEncoderOptions options = new PngEncoderOptions();
JDeli.write(bufferedImage, options, file);
Start reading and writing images with one line of code
Read: BufferedImage image = JDeli.read(streamOrFile);
Write: JDeli.write(myBufferedImage, OutputFormat.HEIC, outputStreamOrFile)