- Java数字图像处理
- DIP - 主页
- DIP - 简介
- DIP - Java BufferedImage 类
- DIP - 图像下载和上传
- DIP - 图像像素
- DIP - 灰度转换
- DIP - 增强图像对比度
- DIP - 增强图像亮度
- DIP - 增强图像清晰度
- DIP - 图像压缩技术
- DIP - 添加图像边框
- DIP - 图像Pyramid
- DIP - 基本阈值
- DIP - 图像形状转换
- DIP - 高斯滤波器
- DIP - 箱式过滤器
- DIP - 腐蚀和膨胀
- DIP - 水印
- DIP - 理解卷积
- DIP - Prewitt 操作员
- DIP - 索贝尔操作员
- DIP - 基尔希运算符
- DIP - 罗宾逊操作员
- DIP - 拉普拉斯算子
- DIP - 加权平均滤波器
- DIP - 创建缩放效果
- DIP - 开源库
- DIP - OpenCV 简介
- DIP - 灰度转换 OpenCV
- DIP - 色彩空间转换
- DIP 有用资源
- DIP - 快速指南
- DIP - 有用的资源
- DIP - 讨论
Java DIP - 图像压缩技术
通过Java可以轻松地压缩和存储图像。图像压缩涉及将图像转换为 jpg 并存储。
为了压缩图像,我们读取图像并转换为 BufferedImage 对象。
此外,我们从ImageIO 类中的getImageWritersByFormatName()方法获取 ImageWriter 。从此 ImageWriter 创建一个ImageWriteParam对象。其语法如下 -
Iterator<ImageWriter> list = ImageIO.getImageWritersByFormatName("jpg"); ImageWriteParam obj = writer_From_List.getDefaultWriteParam();
从此 ImageWriteParam 对象中,您可以通过调用setCompressionMode()和setCompressionQuality()这两个方法来设置压缩。它们的语法如下所示 -
obj.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); obj.setCompressionQuality(0.05f);
setCompressionMode() 方法以Mode_EXPLICIT 作为参数。简要描述了其他一些模式 -
先生。 | 模式 |
---|---|
1 |
模式默认 它是一个常量值,可以传递到方法中以便为将来的写入启用该功能。 |
2 |
模式_禁用 它是一个常量值,可以传递到方法中以禁用该功能以便将来写入。 |
3 |
模式_显式 它是一个常量值,可以传递到方法中以便为将来的写入启用该功能。 |
除了压缩方法之外,ImageWriteParam 类还提供其他方法。它们被简要描述 -
先生。 | 方法及说明 |
---|---|
1 |
canOffsetTiles() 如果写入器在写入时可以使用非零网格偏移执行平铺,则返回 true。 |
2 |
getBitRate(浮点质量) 它返回一个浮点值,指示给定质量级别下输入图像数据每一位的输出数据位数的估计值。 |
3 |
获取语言环境() 它返回当前设置的区域设置,如果仅支持默认区域设置,则返回 null。 |
4 |
isCompressionLossless() 如果当前压缩类型提供无损压缩,则返回 true。 |
5 |
取消设置压缩() 它会删除任何以前的压缩类型和质量设置。 |
6 |
取消设置平铺() 它会删除之前通过调用 setTiling 指定的所有图块网格参数。 |
例子
以下示例演示了如何使用 ImageWriteParam 类来压缩图像 -
import java.io.*; import java.util.*; import java.awt.image.*; import javax.imageio.*; import javax.imageio.stream.ImageOutputStream; class Compression { public static void main(String[] args) throws IOException { File input = new File("digital_image_processing.jpg"); BufferedImage image = ImageIO.read(input); File compressedImageFile = new File("compress.jpg"); OutputStream os =new FileOutputStream(compressedImageFile); Iterator<ImageWriter>writers = ImageIO.getImageWritersByFormatName("jpg"); ImageWriter writer = (ImageWriter) writers.next(); ImageOutputStream ios = ImageIO.createImageOutputStream(os); writer.setOutput(ios); ImageWriteParam param = writer.getDefaultWriteParam(); param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); param.setCompressionQuality(0.05f); writer.write(null, new IIOImage(image, null, null), param); os.close(); ios.close(); writer.dispose(); } }
输出
当您执行给定的代码时,它将图像digital_image_processing.jpg压缩为其等效的压缩图像,并将其写入硬盘上,名称为compress.jpg。