图片压缩工具

2021-01-10  本文已影响0人  MeteorCat

1.代码如下

public class  ImageZipUtil {

    /**
     * 根据设置的宽高等比例压缩图片文件<br> 先保存原文件,再压缩、上传
     * @param oldFile 要进行压缩的文件   * @param newFile 新文件
     * @param width 宽度 //设置宽度时(高度传入0,等比例缩放)
     * @param height 高度 //设置高度时(宽度传入0,等比例缩放)
     * @param quality 质量   * @return 返回压缩后的文件的全路径
     */
    public static boolean zipImageFile(InputStream oldFile,String srcImgPath, int width, int height,float quality) {
        boolean writeFlag = false;
        if (oldFile == null) {
            return writeFlag;
        }
        try {
            /** 对服务器上的临时文件进行处理 */
            Image srcFile = ImageIO.read(oldFile);
            int w = srcFile.getWidth(null);
            int h = srcFile.getHeight(null);
            double bili;      if(width>0){
                bili=width/(double)w;        height = (int) (h*bili);
            }else{
                if(height>0){
                    bili=height/(double)h;
                    width = (int) (w*bili);
                }
            }
            String subfix = "jpg";
            subfix = srcImgPath.substring(srcImgPath.lastIndexOf(".")+1,srcImgPath.length());
            BufferedImage buffImg = null;
            if(subfix.equals("png")){
                buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
            }else{
                buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            }      Graphics2D graphics = buffImg.createGraphics();
            graphics.setBackground(new Color(255,255,255));
            graphics.setColor(new Color(255,255,255));
            graphics.fillRect(0, 0, width, height);
            graphics.drawImage(srcFile.getScaledInstance(width, height, Image.SCALE_SMOOTH), 0, 0, null);
            writeFlag = ImageIO.write(buffImg, subfix, new File(srcImgPath));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return writeFlag;
    }

}

上一篇 下一篇

猜你喜欢

热点阅读