网上有很多压缩图片的方法,但是要么就是不能压缩到指定的大小以内,要么就是要引用第三方的插件,都不太符合我的要求,所以就想着自己写一个方法来实现。这种方法有点不好就是如果图片特别大则要进行多次判断和读取,可能时间会有点长,这要看实际情况,用的时候要自己注意。

实现的思路:读取图片大小→判断是否符合要求大小→不符合就宽和高同时缩减10%→再进行判断以此循环。

package com.goldgrid.compresspic;import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;import javax.imageio.ImageIO;import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;public class CompressPic3 {public static String CompressPic(String srcPath,String targetPath) throws Exception {double cutPercent=0.1;File file=new File(srcPath);BufferedImage bufferedImage=ImageIO.read(new FileInputStream(file));int width=bufferedImage.getWidth(null);int height=bufferedImage.getHeight(null);long fileLength=file.length();while((fileLength/1024)>=300) {width=(int)(width*(1-cutPercent));height=(int)(height*(1-cutPercent));BufferedImage tag = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);tag.getGraphics().drawImage(bufferedImage, 0, 0, width, height, null); // 绘制缩小后的图FileOutputStream deskImage = new FileOutputStream(targetPath); // 输出到文件流JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(deskImage);encoder.encode(tag); // 近JPEG编码deskImage.close();File file1=new File(targetPath);BufferedImage bufferedImage1=ImageIO.read(new FileInputStream(file1));width=bufferedImage1.getWidth(null);height=bufferedImage1.getHeight(null);fileLength=file1.length();}return targetPath;}public static void main(String[] args) throws Exception {File file3=new File("d:/ZTestForWork/g.jpg");BufferedImage bufferedImage3=ImageIO.read(new FileInputStream(file3));System.out.println(file3.length());int width3=bufferedImage3.getWidth(null);int height3=bufferedImage3.getHeight(null);System.out.println("压缩前图片的宽为:"+width3);System.out.println("压缩前图片的高为:"+height3);CompressPic3.CompressPic("d:/ZTestForWork/g.jpg", "d:/ZTestForWork/zipg.jpg");/* String imgdist=reduceImg("d:/ZTestForWork/d.jpg", "d:/ZTestForWork/zipd.jpg", 1600, 1920, null);*/File file4=new File("d:/ZTestForWork/zipg.jpg");BufferedImage bufferedImage4=ImageIO.read(new FileInputStream(file4));System.out.println(file4.length());int width4=bufferedImage4.getWidth(null);int height4=bufferedImage4.getHeight(null);System.out.println("压缩后图片的宽为:"+width4);System.out.println("压缩后图片的高为:"+height4);}
}

java按比例压缩图片到指定的大小(kb、mb)相关推荐

  1. 压缩图片大小的java代码_java按比例压缩图片的源代码,用java如何把图片处理到指定大小...

    [要分析某个网页中的代码构成,需要某个结点下的内容.用此原始方法可以得到整个网页的源码.其实更简单的方法是使用 WebClient 或 HtmlUtil 等开源方式 .public class Ht ...

  2. java 压缩图片至指定大小

    需求: 压缩图片至300k以下 一开始没有思路在网上搜,发现google有个插件叫Thumbnails,然后看到了这篇文章: https://blog.csdn.net/u010355502/arti ...

  3. java等比压缩图片_java上传并压缩图片(等比例压缩或者原尺寸压缩)

    先看效果: 原图:1.33M 处理后:27.4kb 关键代码; package codeGenerate.util; import java.awt.Color; import java.awt.Gr ...

  4. java使用Thumbnails压缩图片

    java使用Thumbnails压缩图片 有时候为了缓解服务器上的存储压力,我们需要将图片进行压缩以换取空间. 下面使用的是google提供的压缩方式: 一.导包 <!-- 压缩图片大小 --& ...

  5. python等比例压缩图片_python(PIL)图像处理(等比例压缩、裁剪压缩) 缩略(水印)图详解...

    #coding:utf-8 ''' python图片处理 @author:fc_lamp @blog:http://fc-lamp.blog.163.com/ ''' import Image as ...

  6. PHP压缩图片到指定的KB

    PHP压缩图片到指定的KB PHP压缩图片主要是用imagejpeg()函数实现的, 官方文档: function imagejpeg($image, $filename = null, $quali ...

  7. 使用Thumbnails等比例压缩图片

    如何使用Thumbnails等比例压缩图片 我是用MultipartFile来接收文件的 具体思路 直接上代码 我是用MultipartFile来接收文件的 最近项目中有一个需要是需要把上传的图片进行 ...

  8. Thumbnails压缩图片到指定大小

    网上看了很多demo,很多都是照搬别人的代码,不管有没有问题,有的甚至递归不关流,还有的递归疯狂往自己磁盘写文件,递归一次写一次,我自己把网上的demo整理改了下发出来. /** * @Descrip ...

  9. java无损压缩图片以及按照比例压缩图片

    需求: 有一个列表加载封面图片 , 只做一个封面显示 , 无实际观察意义,但是图片的原图很大 , 造成资源加载浪费,所以按照比例压缩文件 import com.sun.image.codec.jpeg ...

最新文章

  1. Flume实操(三)【实时读取目录文件到HDFS案例】
  2. vlan跨交换机 udp广播_划分VLAN和接二级路由都能阻止广播风暴?两者有什么区别?...
  3. muduo网络库源码阅读Step by Step
  4. 一款纯css3实现的超炫动画背画特效
  5. vue2.0中ckeckbox(复选框)的使用心得,及对click事件和change的理解
  6. 论降价就服拼多多!618大促 iPhone最高降幅2811元
  7. 软件外包,IT咨询和转型
  8. java定义时钟类clock_Java 编程题,定义一个时钟类(Clock)
  9. MAC 上的 PostMan 汉化
  10. HL-1208机器清零方法
  11. uniapp h5浏览器文件下载
  12. rtx2060为什么叫智商卡_老电脑升级RTX2060,——性能,功耗,静音都一步到位!...
  13. 行测-图形推理-7-相异图形类
  14. python菜鸟教程官网绘图-Python Tkinter 画布(Canvas)
  15. [附源码]java毕业设计领导干部听课评课管理系统
  16. 零基础学 Python 有什么建议?
  17. LeetCode 904. 水果成篮
  18. app销售数据统计手机页面
  19. 面试测试岗想拿13K,HR说最多能给你10K,一招教你怼死HR?
  20. python3使用myqr生成链接二维码

热门文章

  1. vue滚动屏幕使其菜单栏隐藏和显示
  2. 电力电子技术总结-电力电子器件2
  3. 易助工资总额管控产品介绍
  4. 分分钟拯救监控知识体系
  5. lisp 画sinx曲线_如何用CAD画正弦曲线????有lisp的最好。。。谢谢了
  6. php条件查询,PHP-----多条件查询(示例代码)
  7. Axure手把手教你如何导入地图
  8. 如何将PDF转换成JPG——speedPDF在线免费批量PDF转JPG
  9. oracle中spool命令的使用,Oracle中Spool命令的使用方法实例
  10. 8、go语言:测试与性能调优