美文网首页
java将上传图片文件进行压缩处理

java将上传图片文件进行压缩处理

作者: 忧郁的冥 | 来源:发表于2019-03-08 16:37 被阅读0次

简述

使用图片压缩的方式缓解上传图片过多导致服务器内存大量占用问题。
[文中源码转自]https://www.cnblogs.com/vaer/p/4337995.html

源码

package com.xj.photo.test;
import java.io.*;
import java.util.Date;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.*;
/**
 * 图片压缩处理
 * @author 崔素强
 */
public class ImgCompress {
    private Image img;
    private int width;
    private int height;
    public String savePath;  //压缩后图片输出路径
    
    public static void main(String[] args) throws Exception {
        System.out.println("开始:" + new Date());
        ImgCompress imgCom = new ImgCompress("D:\\test\\1122.jpg");
        imgCom.savePath ="D:\\test\\33.jpg";
        imgCom.resizeFix(400, 400);
        System.out.println("结束:" + new Date());
    }
    /**
     * 构造函数
     */
    public ImgCompress(String fileName) throws IOException {
        File file = new File(fileName);// 读入文件
        img = ImageIO.read(file);      // 构造Image对象
        width = img.getWidth(null);    // 得到源图宽
        height = img.getHeight(null);  // 得到源图长
    }
    /**
     * 按照宽度还是高度进行压缩
     * @param w int 最大宽度
     * @param h int 最大高度
     */
    public void resizeFix(int w, int h) throws IOException {
        if (width / height > w / h) {
            resizeByWidth(w);
        } else {
            resizeByHeight(h);
        }
    }
    /**
     * 以宽度为基准,等比例放缩图片
     * @param w int 新宽度
     */
    public void resizeByWidth(int w) throws IOException {
        int h = (int) (height * w / width);
        resize(w, h);
    }
    /**
     * 以高度为基准,等比例缩放图片
     * @param h int 新高度
     */
    public void resizeByHeight(int h) throws IOException {
        int w = (int) (width * h / height);
        resize(w, h);
    }
    /**
     * 强制压缩/放大图片到固定的大小
     * @param w int 新宽度
     * @param h int 新高度
     */
    public void resize(int w, int h) throws IOException {
        // SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢
        BufferedImage image = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB ); 
        image.getGraphics().drawImage(img, 0, 0, w, h, null); // 绘制缩小后的图
        if(savePath!=null){
            File destFile = new File(savePath);
            FileOutputStream out = new FileOutputStream(destFile); // 输出到文件流
            // 可以正常实现bmp、png、gif转jpg
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
            encoder.encode(image); // JPEG编码
            out.close();
        }else{
            System.out.println("无效输出路径");
        }

    }
}

相关文章

  • java将上传图片文件进行压缩处理

    简述 使用图片压缩的方式缓解上传图片过多导致服务器内存大量占用问题。[文中源码转自]https://www.cnb...

  • Java图片压缩处理

    网页中某些图片大的时候,图片会加载慢,这时候需要对图片进行压缩处理,Java有对图片进行压缩处理的方法。 整体思路...

  • 微信小程序上传图片压缩

    上传图片时图片过大,接口请求速度会很慢,利用canvas对图片进行压缩 wxml文件: js文件:

  • 图片压缩踩坑

    业务需求:上传图片分析:Android机本地的文件进行上传时需要进行压缩,包括图片尺寸和大小的压缩,第三方库(Lu...

  • 图片上传压缩预览

    这里的 标签是用来预览图片的: 读取上传文件: 利用canvas进行图片的压缩: 我们比较两张图片压缩前后的区别:

  • apk压缩记录

    一、图片压缩 打开 Tiny压缩 直接上传图片并下载下来就已经进行压缩了,简单方便; 二、7Z压缩上线前 将APK...

  • 上传文件

    上传文件,定位到上传文件元素,将文件上传。 案例:在百度搜索上传本地图片进行搜索。

  • Vue上传图片压缩的问题

    上传图片太大,需要前台进行图片压缩上传图片大于100* 1024 的用canvas 来压缩来解决然后IOS拍照上传...

  • 删除后的压缩包如果想挽回还能恢复回来吗?

    压缩包大家都会接触和使用到,如果我们有多个文件需要进行传输或者上传,我们就会把这些文件进行压缩处理。这样做的好处就...

  • 2020-05-23 前端图片压缩

    前端完成图片压缩 流程 通过原生的input标签拿到要上传的图片文件 将图片文件转化成img元素标签 在canva...

网友评论

      本文标题:java将上传图片文件进行压缩处理

      本文链接:https://www.haomeiwen.com/subject/xmorpqtx.html