java实现图片压缩的思路与代码_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实现js代码压缩、java权限管理实现思路、java购物车实现思路、java 定时器实现思路、java 登录实现思路,以便于您获取更多的相关知识。

时间: 2024-10-03 04:04:21

java实现图片压缩的思路与代码_java的相关文章

Java 图片压缩实现思路及代码_java

Java图片压缩代码 复制代码 代码如下: package com.img; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import com.sun.image.codec.jpeg.JPEGCod

Java 图片压缩实现思路及代码

本文为大家详细介绍下图片压缩的具体实现思路及java代码,想学习的各位可以参考下哈,希望对大家有所帮助   Java图片压缩代码 复制代码 代码如下: package com.img; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import javax.im

java问题-图片压缩时遇到问题,高手进,拜谢啊

问题描述 图片压缩时遇到问题,高手进,拜谢啊 问题描述: 使用thumbnailator时nested exception is java.lang.OutOfMemoryError: Java heap space 上传图片后使用thumbnailator进行压缩,所有手机拍摄的图片没有问题.美工做的图,在压缩过程中报溢出错误. 挣扎,求解

Java压缩文件ZIP实例代码_java

提示:java.util.zipoutputstream         java API压缩为zip文件 代码: 复制代码 代码如下: package com.gaoqi.test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.zip.ZipEntry;import java.util.z

C#图片切割、图片压缩、缩略图生成代码汇总_C#教程

本文为大家整理了C#图片切割.图片压缩.缩略图生成的实现代码,大家可以收藏,方便以后使用,具体内容如下 /// 图片切割函数 /// </summary> /// <param name="sourceFile">原始图片文件</param> /// <param name="xNum">在X轴上的切割数量</param> /// <param name="yNum">在Y轴

Java Web 简单的分页显示实例代码_java

本文通过两个方法:(1)计算总的页数. (2)查询指定页数据,实现简单的分页效果. 思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指定页的数据,在表示层通过 EL 表达式和 JSTL 将该页数据显示出来. 先给大家展示下效果图: 题外话:该分页显示是用 "表示层-控制层-DAO层-数据库"的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步.废话不多说了,开始进入主题,详细步骤如下所示: 1.DAO层-数据库 JDBCUtils 类用于打开和关闭数据

Java实现图片与Base64编码互转_java

淘宝里面的html用base64转换图片,不知道为什么,不过看起来好像很美好,话不多说,直接上代码: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import sun.misc.BASE64Decoder; import sun.misc.BA

Java HtmlEmail 邮件发送的简单实现代码_java

Java 项目中常常回遇到发送邮件 Java 发送邮件有几种,今天先给大家介绍用 HtmlEmail 来发送邮件,我这里是用 Maven 来搭建的 HtmlEmail 可以抄带HTML 首先 需要导入jar 包 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.4</versio

java基于swing实现的五子棋游戏代码_java

本文实例讲述了java基于swing实现的五子棋游戏代码.分享给大家供大家参考. 主要功能代码如下: 复制代码 代码如下: import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Main extends JFrame implements ActionListener{         private static final long serialVersionUID = 1L;