服务器同时为Android端和浏览器端进行图片传输,有时图片尺寸大,为节省流量,压缩尺寸发送。
package util;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
/**
* 本段代码用于转换图片大小的工具类
*/
public class GetImageWidth_Height {
/*
*
*/
public static void main(String[] args) {
try {
BufferedImage img1 = ImageIO.read(new File("e:/love2.jpg"));
System.out.println(img1.getWidth() + "*" + img1.getHeight());
ImageIcon icon1 = new ImageIcon(img1);
System.out.println(icon1.getIconWidth() + "*" + icon1.getIconHeight());
Image img2 = img1.getScaledInstance(img1.getWidth() / 2, img1.getHeight() / 2,Image.SCALE_AREA_AVERAGING);
ImageIcon icon2 = new ImageIcon(img2);
System.out.println(icon2.getIconWidth() + "*" + icon2.getIconHeight());
BufferedImage bImage = new BufferedImage(img2.getWidth(null), img2.getHeight(null), BufferedImage.TYPE_INT_BGR);
Graphics bg = bImage.getGraphics();
bg.drawImage(img2, 0, 0, null);
bg.dispose();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(bImage, "jpg", out);
byte[] abc = out.toByteArray();
File file=new File("e:/love3.jpg");
FileOutputStream fos=new FileOutputStream(file);
fos.write(abc);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 这是根据一串二进制数据读取图片并按照指定输入的大小进行缩放的方法
* @param width 希望生成图片的长
* @param height 希望生成图片的宽
* @param img 图片的二进制数据
* @return 缩放后图片的二进制数据
* @throws Exception
*/
public static byte[] getImage(int width,int height, byte[] img) throws Exception{
BufferedImage imgTemp=ImageIO.read(new BufferedInputStream(new ByteArrayInputStream(img)));
Image imgTemp2=imgTemp.getScaledInstance(width,height,BufferedImage.TYPE_INT_BGR);
BufferedImage bImage = new BufferedImage(imgTemp2.getWidth(null), imgTemp2.getHeight(null), BufferedImage.TYPE_INT_BGR);
Graphics bg = bImage.getGraphics();
bg.drawImage(imgTemp2, 0, 0, null);
bg.dispose();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(bImage, "jpg", out);
return out.toByteArray();
}
/**
* 这是根据一串二进制数据读取图片并按照指定输入的缩小倍数进行缩放的方法
* @param num
* @param img
* @return 缩放后图片的二进制数据
* @throws Exception
*/
public static byte[] getImage(int num,byte[] img) throws Exception{
BufferedImage imgTemp=ImageIO.read(new BufferedInputStream(new ByteArrayInputStream(img)));
Image imgTemp2=imgTemp.getScaledInstance(imgTemp.getWidth()/num,imgTemp.getHeight()/num,BufferedImage.TYPE_INT_BGR);
BufferedImage bImage = new BufferedImage(imgTemp2.getWidth(null), imgTemp2.getHeight(null), BufferedImage.TYPE_INT_BGR);
Graphics bg = bImage.getGraphics();
bg.drawImage(imgTemp2, 0, 0, null);
bg.dispose();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ImageIO.write(bImage, "jpg", out);
return out.toByteArray();
}
}
分享到:
相关推荐
这个"Android项目源码获取照片裁剪图片压缩图片工具库"提供了一整套解决方案,旨在帮助开发者高效地处理图像,提高应用性能,同时节省存储空间。下面我们将详细探讨这些知识点。 1. **照片裁剪**: - 裁剪功能通常...
"mac压缩图片工具"是专为Mac用户设计的一款实用软件,能够有效地压缩PNG格式的图片,同时保持高质量。这款工具简单易用,无需复杂的设置,非常适合个人用户和小型企业进行日常的图片优化工作。 PNG(Portable ...
无损压缩图片工具(源码+项目说明)(哈夫曼算法).zip无损压缩图片工具(源码+项目说明)(哈夫曼算法).zip无损压缩图片工具(源码+项目说明)(哈夫曼算法).zip无损压缩图片工具(源码+项目说明)(哈夫曼算法)...
java压缩图片工具类
"压缩图片工具,只支持png压缩.rar"这个压缩包文件提供了一个专门针对PNG格式图片进行压缩的工具。PNG(Portable Network Graphics)是一种无损压缩的位图格式,广泛用于网页设计、图形用户界面以及需要透明背景的...
本篇文章将深入探讨图片压缩的基本原理、常见的压缩方法以及如何使用批量压缩图片工具。 首先,我们来理解图片压缩的基本概念。图片是由像素组成的,每个像素包含颜色和亮度信息。未经压缩的图片文件通常以原始的二...
批量压缩图片工具就是为了高效处理大量图像文件而设计的。本文将详细介绍这类工具的关键知识点,以及如何利用Go语言来实现。 首先,批量图片压缩涉及到的主要技术包括图片格式、压缩算法和编程语言的应用。常见的...
"JPG无损压缩图片工具" 是一种专门设计用于解决这个问题的应用程序,它允许用户在降低文件大小的同时,尽量减少对图像质量的影响。这种工具通常采用先进的算法,如基于矢量的压缩方法或者通过智能优化来减小文件尺寸...
快速批量无损压缩图片工具快速批量无损压缩图片工具快速批量无损压缩图片工具快速批量无损压缩图片工具
"PNG压缩图片工具 减小图片体积 PNGOO"是一款专注于解决这个问题的软件,它能够帮助用户在保持图片质量的同时,有效减小PNG图片的体积。 PNGOO是一款高效且易于使用的PNG图片压缩工具,它的主要功能是通过优化PNG...
《批量压缩图片工具源码.zip》是一个基于C#编程语言的源代码压缩包,主要功能是实现批量处理图片的压缩工作。在当前的数字时代,图片处理和分享变得越来越频繁,而图片的大小直接影响到存储空间和网络传输速度。因此...
本文将深入探讨“读取硬盘上的图片”和“解压缩图片工具类”的相关知识点,以及如何实现这样的功能。我们将以提供的`GetAdvertiseImgServlet.java`文件作为切入点,探讨Java环境下如何完成这一任务。 首先,读取...
限定高宽压缩图片工具 1、在下工具的下面 点击“开始压缩”按钮 开始压缩。 2、添加文件夹时会子文件夹下的图片添加到列表里。 但是输出 直到一个你指定的文件夹下。 不会建立子文件夹。因此 主要子文件夹。 3、若...
打开为源码,通过运行debug目录下的exe,输入目录再回车,遍历目录下所有大于300k的图片,压缩到小于300k,可以重复压缩同一目录的图片(.net core 3.1),有编码基础的可以根据源码拓展功能,重新编译即可
Java作为一种广泛应用的编程语言,提供了丰富的库和工具来处理图片压缩。本篇将详细讲解如何利用Java进行图片压缩,以及一些常用的Java图片压缩库。 首先,理解图片压缩的基本原理至关重要。图片压缩分为有损压缩和...
TakePhoto是一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库,目前最新版本3.0.2。 支持通过相机拍照获取图片 支持从相册选择图片 支持从文件选择图片 支持批量...