In this article, I will show you how to resize images in Java.
ImageIO allows the reading and writing of images in Java and processing the image. I will also cover image resizing using our JDeli image library.
How to resize an image in ImageIO
Step 1 Create a File handle, InputStream, or URL pointing to the raw image.
Step 2 ImageIO will now be able to read a BMP file into a BufferedImage. This syntax is like so:
BufferedImage image = ImageIO.read(bmpFileOrInputStreamOrURL) |
Step 3 Create a second BufferedImage at the new size
final int w = image.getWidth(); final int h = image.getHeight(); BufferedImage scaledImage = new BufferedImage((w * 2),(h * 2), BufferedImage.TYPE_INT_ARGB); |
Step 4 Create a transformation
final AffineTransform at = AffineTransform.getScaleInstance(2.0, 2.0); final AffineTransformOp ato = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC); |
Step 5 Apply the transformation
scaledImage = ato.filter(image, scaledImage); |
How to resize an image in JDeli
Step 1 Add JDeli to your class or module path. (download the trial jar).
Step 2 Create a File, InputStream pointing to the raw image. You can also use a byte[] containing the image data.
Step 3 Read the image into a BufferedImage
BufferedImage image = JDeli.read(bmpFile); |
Step 4 Create a transformation
ImageProcessingOperations operations = new ImageProcessingOperations(); operations.scale(scalingFactor); |
Step 5 Apply the transform
image = JDeli.process(ImageProcessingOperations operations, BufferedImage image); |
Why use JDeli process Images in Java?
JDeli offers a range of advantages over ImageIO and alternatives, including:
- prevent heap related JVM crashes
- support for additional image formats such as Heic
- reduce the output file size
- improve read/write performance
- create smaller files
- control over output
- support threading
- superior image scaling algorithms