java实现图片压缩的思路与代码

 更新时间:2016年03月23日 14:59:35   作者:有妳很满促  
这篇文章主要为大家详细介绍了java实现图片压缩的思路与代码,将较大的图片按照指定的宽高,以宽为基准,或高为基准按照等比例压缩图片,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java实现图片压缩的相关代码,供大家参考,具体内容如下

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
 
import javax.imageio.ImageIO;
 
public class ImageProcess {
 /**
  * 图片
  */
 private Image img; 
 /**
  * 宽度
  */
 private int width; 
 /**
  * 高度
  */
 private int height; 
 /**
  * 文件格式
  */
 private String imageFormat;
 /** 
  * 构造函数 
  * @throws Exception 
  */ 
 public ImageProcess(InputStream in,String fileName) throws Exception{ 
   //构造Image对象 
   img = ImageIO.read(in); 
   //得到源图宽 
   width = img.getWidth(null);
   //得到源图长 
   height = img.getHeight(null);
   //文件格式
   imageFormat = fileName.substring(fileName.lastIndexOf(".")+1);
 } 
 /** 
  * 按照宽度还是高度进行压缩 
  * @param w int 最大宽度 
  * @param h int 最大高度 
  */ 
 public byte[] resizeFix(int w, int h) throws IOException { 
   if (width / height > w / h) { 
     return resizeByWidth(w); 
   } else { 
     return resizeByHeight(h); 
   } 
 } 
 /** 
  * 以宽度为基准,等比例放缩图片 
  * @param w int 新宽度 
  */ 
 public byte[] resizeByWidth(int w) throws IOException { 
   int h = (int) (height * w / width); 
   return resize(w, h); 
 } 
 /** 
  * 以高度为基准,等比例缩放图片 
  * @param h int 新高度 
  */ 
 public byte[] resizeByHeight(int h) throws IOException { 
   int w = (int) (width * h / height); 
   return resize(w, h); 
 } 
 /** 
  * 强制压缩/放大图片到固定的大小 
  * @param w int 新宽度 
  * @param h int 新高度 
  */ 
 public byte[] resize(int w, int h) throws IOException { 
   // SCALE_SMOOTH 的缩略算法 生成缩略图片的平滑度的 优先级比速度高 生成的图片质量比较好 但速度慢 
   BufferedImage image = new BufferedImage(w, h,BufferedImage.TYPE_INT_RGB );  
   image.getGraphics().drawImage(img, 0, 0, w, h, null); // 绘制缩小后的图 
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   ImageIO.write(image, imageFormat, baos);
   return baos.toByteArray();
 } 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,轻松实现图片压缩操作。

相关文章

  • Java使用正则表达式实现找出数字功能示例

    Java使用正则表达式实现找出数字功能示例

    这篇文章主要介绍了Java使用正则表达式实现找出数字功能,结合实例形式分析了Java针对数字的匹配查找及非数字替换操作相关实现技巧,需要的朋友可以参考下
    2017-03-03
  • Java中double保留两位小数的多种方法

    Java中double保留两位小数的多种方法

    这篇文章主要给大家介绍了关于Java中double保留两位小数的多种方法,对于double数据类型进行计算发生的精度丢失的情况,可以按照自己的需求选择任意方式,需要的朋友可以参考下
    2023-07-07
  • java servlet结合Oracle搭建java的web开发环境

    java servlet结合Oracle搭建java的web开发环境

    今天我将与大家分享一下我学JAVA WEB写的一些小实例 ,我个人是不太喜欢书本上的晦涩的概念的,所以我花了更多的时间在一些应用实例上,我觉得这样的学习方式很适合我,由简到繁,由浅入深
    2015-12-12
  • IDEA集成Gitee码云的实现步骤

    IDEA集成Gitee码云的实现步骤

    本文主要介绍了IDEA集成Gitee码云的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • idea插件在线和离线安装方法

    idea插件在线和离线安装方法

    这篇文章主要介绍了idea插件在线和离线安装方法,文末补充介绍了IntelliJ IDEA 安装mybaits当前运行sql日志插件在线与离线安装方法
    ,感兴趣的朋友一起看看吧
    2023-12-12
  • java如何利用NIO压缩文件或文件夹

    java如何利用NIO压缩文件或文件夹

    这篇文章主要介绍了java如何利用NIO压缩文件或文件夹问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • java中的SpringBoot框架

    java中的SpringBoot框架

    这篇文章主要介绍了java学习之SpringBoot框架,文章基于Java的相关资料展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • Java项目导入IDEA的流程配置以及常见问题解决方法

    Java项目导入IDEA的流程配置以及常见问题解决方法

    通常一个团队中可能有人用eclipse,有人用intelliJ,那么经常会出现需要导入别人用eclipse建好的web项目,下面这篇文章主要给大家介绍了关于Java项目导入IDEA的流程配置以及常见问题解决方法的相关资料,需要的朋友可以参考下
    2023-05-05
  • 使用Java创建数据透视表并导出为PDF的方法

    使用Java创建数据透视表并导出为PDF的方法

    数据透视分析是一种强大的工具,可以帮助我们从大量数据中提取有用信息并进行深入分析,本文将介绍如何使用Java来构建PivotTable以及实现数据透视分析,并将其导出为PDF
    2023-10-10
  • Mybatis 中如何判断集合的size

    Mybatis 中如何判断集合的size

    这篇文章主要介绍了在Mybatis中判断集合的size操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02

最新评论