• java 上传图片压缩图片


    package com.bitspace.flame.util;

    import java.io.File;

    import java.awt.Image;
    import java.awt.image.BufferedImage;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;

    import javax.imageio.ImageIO;

    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGEncodeParam;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    public class ImageZipUtil{

    /**
    * 等比例压缩图片文件<br> 先保存原文件,再压缩、上传
    * @param oldFile 要进行压缩的文件
    * @param newFile 新文件
    * @param width 宽度 //设置宽度时(高度传入0,等比例缩放)
    * @param height 高度 //设置高度时(宽度传入0,等比例缩放)
    * @param quality 质量
    * @return 返回压缩后的文件的全路径
    */
    public static String zipImageFile(File oldFile, File newFile, int width, int height, float quality) {
    if (oldFile == null) {
    return null;
    }
    try {
    /** 对服务器上的临时文件进行处理 */
    Image srcFile = ImageIO.read(oldFile);
    int w = srcFile.getWidth(null);
    // System.out.println(w);
    int h = srcFile.getHeight(null);
    // System.out.println(h);
    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);
    }
    }
    /** 宽,高设定 */
    BufferedImage tag = new BufferedImage(width, height,
    BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(srcFile, 0, 0, width, height, null);
    //String filePrex = oldFile.getName().substring(0, oldFile.getName().indexOf('.'));
    /** 压缩后的文件名 */
    //newImage = filePrex + smallIcon+ oldFile.getName().substring(filePrex.length());

    /** 压缩之后临时存放位置 */
    FileOutputStream out = new FileOutputStream(newFile);

    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);
    /** 压缩质量 */
    jep.setQuality(quality, true);
    encoder.encode(tag, jep);
    out.close();

    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return newFile.getAbsolutePath();
    }

    /**
    * 按宽度高度压缩图片文件<br> 先保存原文件,再压缩、上传
    * @param oldFile 要进行压缩的文件全路径
    * @param newFile 新文件
    * @param width 宽度
    * @param height 高度
    * @param quality 质量
    * @return 返回压缩后的文件的全路径
    */
    public static String zipWidthHeightImageFile(File oldFile,File newFile, int width, int height, float quality) {
    if (oldFile == null) {
    return null;
    }
    String newImage = null;
    try {
    /** 对服务器上的临时文件进行处理 */
    Image srcFile = ImageIO.read(oldFile);
    int w = srcFile.getWidth(null);
    // System.out.println(w);
    int h = srcFile.getHeight(null);
    // System.out.println(h);

    /** 宽,高设定 */
    BufferedImage tag = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
    tag.getGraphics().drawImage(srcFile, 0, 0, width, height, null);
    //String filePrex = oldFile.substring(0, oldFile.indexOf('.'));
    /** 压缩后的文件名 */
    //newImage = filePrex + smallIcon+ oldFile.substring(filePrex.length());

    /** 压缩之后临时存放位置 */
    FileOutputStream out = new FileOutputStream(newFile);

    JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    JPEGEncodeParam jep = JPEGCodec.getDefaultJPEGEncodeParam(tag);
    /** 压缩质量 */
    jep.setQuality(quality, true);
    encoder.encode(tag, jep);
    out.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return newImage;
    }

    public static void main(String args[]) throws IOException {
    System.out.println(ImageZipUtil.zipWidthHeightImageFile(new File("E:/图片/1.jpg"),new File("E:/图片/1-1.jpg"), 300, 480, 5f));
    }

    }

  • 相关阅读:
    9.Vue技术栈开发实战-使用Mock模拟Ajax请求
    8.Vue技术栈开发实战-Ajax请求实战
    7.Vue技术栈开发实战-状态管理Vuex进阶
    6.Vue技术栈开发实战-状态管理Vuex(二)
    5.Vue技术栈开发实战-状态管理Vuex(一)
    4.Vue技术栈开发实战-状态管理bus的使用
    3.Vue技术栈开发实战-路由进阶篇
    2.Vue技术栈开发实战-路由基础篇
    Vue技术栈开发实战_汇总贴
    1.Vue技术栈开发实战-使用vue-cli3创建项目
  • 原文地址:https://www.cnblogs.com/austinspark-jessylu/p/9408485.html
Copyright © 2020-2023  润新知