使用Thumbnails压缩或放大图片大小(java)

首先看下缩放图片的核心代码,其实只有一行而已
//ins表示ByteArrayInputStream形式的图片
//scale中的数据就是缩小或者放大的比例,比如小于1则表示压缩,大于1表示放大
//out表示ByteArrayOutputStream形式的输出数据 也就是ins缩放后的图片数据
Thumbnails.of(ins).scale(0.99f).toOutputStream(out);
整体代码:

为了方便起见,我把整个代码全拿过来了,防止导错包,所以使用的话直接复制即可使用
说明我这里压缩的图片是base64格式的图片,已经去掉base64头部信息,关于如何去除头部信息已经获取图片大小可以参考以下链接

获取base64编码格式的图片大小
package com.web.framework.bbpp.module.yituhezisone.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import net.coobird.thumbnailator.Thumbnails;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;




public class CompressImage {

    public static void main(String[] args) {
        String str = "base64编码格式的图片";
         CompressImage com = new CompressImage();
          //因为我使用的是base64编码格式的图片数据,所以需要先将base转为字节数组
         byte[] decode = com.decode(str);
         //将字节数组数据传入压缩方法中compressByteImage
         str =  com.compressByteImage(decode);
         System.out.println("压缩后的图片数据"+str);
      }

    /**
     * byte数组 转换为 Base64字符串
     */
    public  String encode(byte[] data) {
        return new BASE64Encoder().encode(data);
    }

    /**
     * Base64字符串 转换为 byte数组
     */
    public  byte[] decode(String base64) {
        try {
            return new BASE64Decoder().decodeBuffer(base64);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new byte[0];
    }

    public String compressByteImage(byte[] bytes) throws IOException {
    //先将字节数组数据转为ByteArrayInputStream 形式
        ByteArrayInputStream ins = new ByteArrayInputStream(bytes);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        //进行压缩 out就是压缩后的数据
        Thumbnails.of(ins).scale(0.99f).toOutputStream(out);
        //将ByteArrayOutputStream形式转为字节数组
        byte[] data = out.toByteArray();
        //将字节数组数据转为base64的格式
        String imageStr = encode(data);
        return imageStr;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想养一只!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值