导入包在jdk的jre下的rt.jar
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.ImageFormatException;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class TestMain {
private static final float DEFAULT_SCALE_QUALITY = 1f;
private static final String DEFAULT_IMAGE_FORMAT = ".jpg"; // 图像文件的格式
private static final String DEFAULT_FILE_PATH = "E:/";
private static Image image;
public static String resize(int width, int height, Float quality, String savePath, Image targetImage) throws ImageFormatException, IOException {
width = Math.max(width, 1);
height = Math.max(height, 1);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(targetImage, 0, 0, width, height, null);
if (savePath == null || "".equals(savePath)) {
savePath = DEFAULT_FILE_PATH + System.currentTimeMillis() + DEFAULT_IMAGE_FORMAT;
}
FileOutputStream fos = new FileOutputStream(new File(savePath));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
JPEGEncodeParam encodeParam = JPEGCodec.getDefaultJPEGEncodeParam(image);
if (quality == null || quality <= 0) {
quality = DEFAULT_SCALE_QUALITY;
}
/** 设置图片压缩质量 */
encodeParam.setQuality(quality, true);
encoder.encode(image, encodeParam);
image.flush();
fos.flush();
fos.close();
return savePath;
}
public static void main(String[] args) throws Exception {
File f =new File("F://aa.jpg");
image = ImageIO.read(f);
TestMain.resize(150, 150, null, null, image);
}
}