常用的java等比压缩图片方法:
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.dagong.querySystem.entity.ConstantInfo;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
/** 
 * 图片压缩处理 
 */  
public class ZipImgUtil {  
    private Image img;  
    private int width;  
    private int height;  
    private static String urlImg2; //定义全局变量方便传地址
    /** 
     * 添加有参和无参构造函数 
     */  
    public ZipImgUtil(){}
    public ZipImgUtil(String imgPath) throws IOException {  
        File file = new File(imgPath);// 读入文件  
        img = ImageIO.read(file);      // 构造Image对象  
        width = img.getWidth(null);    // 得到源图宽  
        height = img.getHeight(null);  // 得到源图长  
    } 
    /** 
     * 确定是按照宽度还是高度进行压缩 
     * @param h int 最大高度 
     * @param w int 最大宽度 
     */  
    public void resizeFix(int h, int w) throws IOException {  
        if ( height/ width > h / w) {  
            resizeByWidth(h);  
        } else {  
            resizeByHeight(w);  
        }  
    }  
    /** 
     * 以高度为基准,等比例放缩图片 
     * @param h int 新高度 
     */  
    public void resizeByWidth(int h) throws IOException {  
        int w = (int) ( width* h / height);  
        resize(h, w);  
    }  
    /** 
     * 以宽度为基准,等比例缩放图片 
    * @param w int 新宽度  
     */  
    public void resizeByHeight(int w) throws IOException {  
        int h = (int) ( height* w /width );  
        resize(h, w);  
    }  
    /** 
     * 进行强制压缩/放大图片到固定的大小 
     * @param w int 新宽度 
     * @param h int 新高度 
     */  
    public void resize(int h, int w) throws IOException {  
    //参数是TYPE_3BYTE_BGR时,图片最清晰!
        BufferedImage image = new BufferedImage(w, h,BufferedImage.TYPE_3BYTE_BGR );   
        image.getGraphics().drawImage(img, 0, 0, w,h, null); // 绘制缩小后的图像  
        //存放的地址
        File destFile = new File(urlImg2);  
        FileOutputStream out = new FileOutputStream(destFile); // 输出文件流  
        // 可以正常实现bmp、png、gif、jpg等图片压缩  
        JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);  
        encoder.encode(image);    //编码  
        out.close();              //关闭流
    }  
    /**
     * 
     * @方法功能说明: 压缩图片文件的方法
     * @修改者名字:   yang 
     * @修改日期:        2015-11-11 
     * @修改次数:1
     * @参数: @param  imgPath="F:/123.png";
     * @参数: @throws Exception   
     * @返回值 void
     */
    public  void comparessImg(String imgPath) throws Exception {  
    //实例对象
    StringBuffer img=new StringBuffer(imgPath);
    urlImg2=img.toString();
    //有参构造方法
    ZipImgUtil imgCom = new ZipImgUtil(img.toString());  
    //压缩
       imgCom.resizeFix(ConstantInfo.IMG_HEIGHT, ConstantInfo.IMG_WIDTH);  
   }
}  

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐