Java将图片压缩100KB以下,压缩图片,将几MB的图片压缩成100KB

前言

随着手机像素越来越大图片占用内存就越大,用户上传多几张图片都占用了很多存储内存,所以我们需要将图片压缩为占用内存较小的图片

实现

复制这个类过去就可以使用,根据自己需求修改即可

package com.util;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;


/**
 * 图片处理类
 *
 * @author yyq
 */
public class ImageUtil {


    /**
     * 生成缩略图
     *
     * @param oidPath 文件大小
     * @param newPath 原文件路径
     * @param smallSize 文件压缩倍数
     * @return
     */
    public static boolean imageGenerateSmall(String oidPath, String newPath, double smallSize) {
        try {
            File bigFile = new File(oidPath);
            Image image = ImageIO.read(bigFile);
            int width = image.getWidth(null);
            int height = image.getHeight(null);
            int widthSmall = (int) (width / smallSize);
            int heightSmall = (int) (height / smallSize);
            BufferedImage buffi = new BufferedImage(widthSmall, heightSmall, BufferedImage.TYPE_INT_RGB);
            Graphics g = buffi.getGraphics();
            g.drawImage(image, 0, 0, widthSmall, heightSmall, null);
            g.dispose();
            ImageIO.write(buffi, "jpg", new File(newPath));
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * 图片压缩,图片大小超过100K自动按比例压缩到100K以下
     *
     * @param fileSize 文件大小
     * @param oidPath 原文件路径
     * @param newPath 压缩后路径
     * @return
     * @throws Exception
     */
    public static boolean imageCompress(long fileSize, String oidPath, String newPath) throws Exception {
        boolean rs = true;
        int kb = 100 * 1024;
        if (fileSize > 100 * 1024) {
            int smallSize = (int) (fileSize % kb == 0 ? fileSize / kb : fileSize / kb + 1);
            double size = Math.ceil(Math.sqrt(smallSize));
            rs = ImageUtil.imageGenerateSmall(oidPath, newPath, size);
        }
        return rs;
    }

    
    public static void main(String[] args) throws Exception {
        File file = new File("D:\\Program Files\\1.jpg");
        System.out.println("--------------文件大小(byte)----------------:"+file.length());
        imageCompress(file.length(), "D:\\Program Files\\1.jpg", "D:\\Program Files\\2.jpg");
    }



}

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值