package pers.wwz.three;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class PicUtils {
/**
* 对图片进行原比例无损压缩,压缩后覆盖原图片
*
* @param path
*/
private static void doWithPhoto(String path) {
File file = new File(path);
if (!file.exists()) {
return;
}
BufferedImage image = null;
FileOutputStream os = null;
try {
image = ImageIO.read(file);
int width = image.getWidth();
int height = image.getHeight();
BufferedImage bfImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
bfImage.getGraphics().drawImage(image.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
os = new FileOutputStream(path);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
encoder.encode(bfImage);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
doWithPhoto("D:\\my_projects\\SadTalker\\examples\\source_image\\666.jpg");
}
}
参考文档:java无损压缩图片_想养一只!的博客-CSDN博客