java 图片压缩 javax.imageio

这篇博客介绍了如何在Java中使用javax.imageio库来压缩图片。通过FileInputStream读取图片文件,然后利用ImageIO进行缓冲处理,设置JPEG压缩质量,并将压缩后的图片保存到新的文件中。
部署运行你感兴趣的模型镜像

File file = new File(imgUrl); // 读取文件
FileInputStream in = new FileInputStream(file);// 流读取文件

ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 定义输出字节流

BufferedImage bufferedImage= ImageIO.read(inputStream); // 文件缓存读取

ImageWriter imgWriter = ImageIO.getImageWritersByFormatName("jpg").next(); // 

 imgWriter.reset();

 ImageWriteParam imgWriteParams= new JPEGImageWriteParam(null);

 imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
            // 这里指定压缩的程度,参数qality是取值0~1范围内,
            imgWriteParams.setCompressionQuality(qality);

        // 要使用压缩,必须指定压缩方式为MODE_EXPLICIT
            imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
            ColorModel colorModel = bufferedImage.getColorModel();// ColorModel.getRGBdefault();
imgWriteParams.setDestinationType(new ImageTypeSpecifier(colorModel,                 colorModel.createCompatibleSampleModel(32, 32)));


 // OutputStream构造
 imgWriter.setOutput(ImageIO.createImageOutputStream(baos));

imgWriter.write(null, new IIOImage(bufferedImage, null, null), imgWriteParams);

byte[] returnImage = baos.toByteArray(); 

 FileImageOutputStream fileOutputStream = new FileImageOutputStream(new File("c:\\images\\myimage22.png"));

 fileOutputStream.write(returnImage);

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

原始代码报错 javax.imageio.IIOException: Invalid argument to native writeImage 异常详细信息: [com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeImage(Native Method), com.sun.imageio.plugins.jpeg.JPEGImageWriter.writeOnThread(JPEGImageWriter.java:1067), com.sun.imageio.plugins.jpeg.JPEGImageWriter.write(JPEGImageWriter.java:363), javax.imageio.ImageWriter.write(ImageWriter.java:615), javax.imageio.ImageIO.doWrite(ImageIO.java:1622), javax.imageio.ImageIO.write(ImageIO.java:1506), cn.com.bdo.invoice.utils.PdfToImgUtil.compressImage(PdfToImgUtil.java:355), cn.com.bdo.invoice.service.impl.InputInvoiceServiceImpl.invoiceOcrIdentifyPC(InputInvoiceServiceImpl.java:908), cn.com.bdo.invoice.service.impl.InputInvoiceServiceImpl$$FastClassBySpringCGLIB$$9237dd8f.invoke(<generated>), org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218), org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771), org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163), org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749), cn.com.bdo.biz.log.starter.support.aop.LogRecordInterceptor.execute(LogRecordInterceptor.java:95), cn.com.bdo.biz.log.starter.support.aop.LogRecordInterceptor.invoke(LogRecordInterceptor.java:68), org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186), org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749), org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88), cn.com.bdo.invoice.aspect.BizLogAspect.around(BizLogAspect.java:60), sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method), sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62), sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodA
08-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值