Java Image Resize resize(String srcImageFile, String result, int newWidth, float quality)

Here you can find the source of resize(String srcImageFile, String result, int newWidth, float quality)

Description

resize

License

Apache License

Declaration

public static void resize(String srcImageFile, String result, int newWidth, float quality) throws IOException 

Method Source Code


//package com.java2s;
//License from project: Apache License 

import java.awt.Color;
import java.awt.Graphics;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.awt.image.ConvolveOp;

import java.awt.image.Kernel;
import java.io.File;

import java.io.IOException;

import javax.swing.ImageIcon;

public class Main {

    public static void resize(String srcImageFile, String result, int newWidth, float quality) throws IOException {

        File originalFile = new File(srcImageFile);

        if (quality > 1) {
            throw new IllegalArgumentException("Quality has to be between 0 and 1");
        }//from ww  w. j  a  v a 2s  . com

        ImageIcon ii = new ImageIcon(originalFile.getCanonicalPath());
        Image i = ii.getImage();
        Image resizedImage = null;

        int iWidth = i.getWidth(null);
        int iHeight = i.getHeight(null);

        if (iWidth > iHeight) {
            resizedImage = i.getScaledInstance(newWidth, (newWidth * iHeight) / iWidth, Image.SCALE_SMOOTH);
        } else {
            resizedImage = i.getScaledInstance((newWidth * iWidth) / iHeight, newWidth, Image.SCALE_SMOOTH);
        }

        // This code ensures that all the pixels in the image are loaded.  
        Image temp = new ImageIcon(resizedImage).getImage();

        // Create the buffered image.  
        BufferedImage bufferedImage = new BufferedImage(temp.getWidth(null), temp.getHeight(null),
                BufferedImage.TYPE_INT_RGB);

        // Copy image to buffered image.  
        Graphics g = bufferedImage.createGraphics();

        // Clear background and paint the image.  
        g.setColor(Color.white);
        g.fillRect(0, 0, temp.getWidth(null), temp.getHeight(null));
        g.drawImage(temp, 0, 0, null);
        g.dispose();

        // Soften.  
        float softenFactor = 0.05f;
        float[] softenArray = { 0, softenFactor, 0, softenFactor, 1 - (softenFactor * 4), softenFactor, 0,
                softenFactor, 0 };
        Kernel kernel = new Kernel(3, 3, softenArray);
        ConvolveOp cOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
        bufferedImage = cOp.filter(bufferedImage, null);

        // Write the jpeg to a file.  
        //           FileOutputStream out = new FileOutputStream(result);  

        // Encodes image as a JPEG data stream  
        //           JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
        //     
        //           JPEGEncodeParam param = encoder  
        //                   .getDefaultJPEGEncodeParam(bufferedImage);  
        //     
        //           param.setQuality(quality, true);  

        //           encoder.setJPEGEncodeParam(param);  
        //           encoder.encode(bufferedImage);  
    }
}

Related

  1. getResizedImage(Image original, final Integer w, final Integer h, boolean keepAspectRatio)
  2. getResizedImage(Image originalImage, Dimension newSize)
  3. getResizedImage(Image originalImage, int newWidth, int newHeight, int imageType)
  4. getResizedImage(String path, int height, int width)
  5. resize(Image img, int newWidth, float quality)
  6. resizeImage(ImageIcon tmpIcon)
  7. resizeImage(String imagePath, int width, int height)
  8. resizeImage(String loadFile, String saveFile, int maxDim)