java压缩图片byte[]并返回byte[]

1、我这里使用的是Thumbnailator,一个google使用的开源的工具类。


2、在github上面的地址是:https://github.com/coobird/thumbnailator

maven的地址

<dependency>
   <groupId>net.coobird</groupId>
   <artifactId>thumbnailator</artifactId>
   <version>0.4.8</version>
</dependency>

3、我的应用场景是要将一个图片的字节数组进行压缩,并且返回字节数组,如果是图片文件的压缩可以参考如下帖子
https://www.cnblogs.com/linkstar/p/7412012.html
 
 
 
 
4、java代码示例:
    public static void main(String[] args) {
        byte[] bs = null;
        try {
            bs = HttpCaller.get(
                    "https://www.baidu.com/img/baidu_jgylogo3.gif",
                    null);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ByteArrayInputStream intputStream = new ByteArrayInputStream(bs);
        Builder<? extends InputStream> builder = Thumbnails.of(intputStream).size(20, 30);
        try {
            BufferedImage bufferedImage = builder.asBufferedImage();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(bufferedImage, "png", baos);
            byte[] byteArray = baos.toByteArray();
            System.out.println(Base64Utils.encodeToString(byteArray));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个示例代码,演示如何使用Java图片压缩成ZIP格式、将ZIP格式的文件解压缩,并将解压缩后的图片转换为byte[]格式: ```java import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; public class ImageZip { public static void main(String[] args) throws Exception { String srcFile = "src.jpg"; String zipFile = "src.zip"; String destFile = "dest.jpg"; // 压缩图片 FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos); FileInputStream fis = new FileInputStream(srcFile); ZipEntry entry = new ZipEntry(srcFile); zos.putNextEntry(entry); byte[] buffer = new byte[1024]; int len; while ((len = fis.read(buffer)) > 0) { zos.write(buffer, 0, len); } zos.closeEntry(); fis.close(); zos.close(); fos.close(); System.out.println("图片压缩成功!"); // 解压图片并转换为byte[]格式 FileInputStream fis2 = new FileInputStream(zipFile); ZipInputStream zis = new ZipInputStream(fis2); entry = zis.getNextEntry(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((len = zis.read(buffer)) > 0) { baos.write(buffer, 0, len); } byte[] imageBytes = baos.toByteArray(); baos.close(); zis.closeEntry(); zis.close(); fis2.close(); System.out.println("图片解压成功并转换为byte[]格式!"); // 将byte[]格式的图片写入文件 FileOutputStream fos2 = new FileOutputStream(destFile); fos2.write(imageBytes); fos2.close(); System.out.println("图片写入文件成功!"); } } ``` 需要注意的是,上述示例代码中的压缩和解压缩仅适用于单个图片文件。如果需要处理多个文件或文件夹,需要进行相应的修改。另外,在实际应用中,需要对异常情况进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值