Java 源代码中的图像压缩方法?2024 年 9 月 10 日 | 阅读 3 分钟 图像压缩允许我们在不显著损害视觉质量的情况下减小图像文件的大小。有两种类型的压缩。首先,我们使用有损压缩,接受较低的图像质量,但实现更小的文件大小。例如,JPEG 和 WebP 格式用于有损压缩。其次,我们使用无损压缩,在压缩过程中保留数据和信息。例如,PNG 和 GIF 格式用于无损压缩。 现在,我们将重点关注使用 JPEG 格式的有损压缩,因为它是互联网上使用最广泛的格式。之后,我们将介绍如何压缩 PNG 图像,这称为 PNG 图像优化。 在 Java 中压缩图像首先,我们将使用 Java Image I/O 的内置 API 来读取和写入图像。它支持 JPEG、PNG、BMP 和 GIF 等各种图像格式。让我们看看如何使用 Java Image I/O 压缩图像。 首先,我们从资源文件中读取图像。然后,我们为 JPG 格式创建一个 ImageWriter,并设置此写入器的输出文件。在写入图像之前,我们创建一个 ImageWriteParam 对象来定义压缩模式和 50% 的压缩质量。最后,我们写入图像,关闭输出流,并清理写入器。 例如,通过将示例图像压缩 50%,我们将文件大小从 790KB 减少到 656KB,略低于原始大小的 83%。因此,图像质量的变化并不明显。 ImageCompressor.java 使用 Thumbnails 库压缩图像Thumbnails 库是一个简单而通用的库,用于调整图像大小和压缩图像。首先,我们将该库添加到我们的 pom.xml 中。 让我们看看如何使用 Thumbnails 类压缩图像。 输出 Image compression completed. 使用 Pngtastic 库压缩图像PNG 优化是一种专门为 PNG 图像设计的压缩类型。我们将使用 Pngtastic 库来优化 PNG 图像。首先,让我们将最新的存储库添加到我们的 pom.xml 中。 最后,我们可以使用 PngOptimizer 类来压缩 PNG 文件。 我们使用 optimize() 方法让库决定最佳压缩。由于是有损压缩,很难显著减小图像大小。在这里,我们将大小从 500 KB 减小到 481 KB。 PNGOptimizationExample.java 输出 PNG optimization completed. 结论我们已经介绍了使用 Java 的两种有损压缩方法:内置的 Java Image I/O API 和 Apache Commons Imaging 库。然后,我们使用 Pngtastic 库对 PNG 图像进行无损压缩。 |
错误“未找到 Java 虚拟机”是由 IDE 抛出的,IDE 用于执行 Java 代码,例如 Eclipse 或 Netbeans IDE。通常在我们开始在系统上打开 Eclipse IDE 时发生,但它不会打开,因为它……
阅读 4 分钟
在 Java 中,OOP 功能使类能够从其他类继承特性和属性。在本节中,我们将讨论 Java 中的多重继承,并讨论为什么 Java 不支持多重继承。什么是多重继承?一个类继承了多个类的行为和函数...
阅读 6 分钟
? Java 以其在面向对象编程中构建和操作对象的能力而闻名。对象是类的实例,在 Java 编程语言中,实例是基本。在这篇文章中,我们将探讨 Java 实例是什么,以及类和对象如何...
阅读 4 分钟
Java 中的最小回文问题,给定一个表示整数的字符串 n,我们的任务是找到回文数并返回最接近的整数(不包括它本身)。如果存在平局,则返回较小的那个。绝对差值...
阅读9分钟
在 Java 中,处理日期是一项常见任务,尤其是在处理需要跟踪日期和时间的应用程序时。涉及日期的最常见操作之一是从给定日期获取年份。幸运的是,Java 提供了几种执行此操作的方法,其中一种...
阅读 4 分钟
Cullen 数是 OEIS 序列 A002064 中定义的整数序列的成员。它最早由 James Cullen 在 1905 年研究。在本节中,我们将讨论 Cullen 数是什么,并创建 Java 程序来检查给定数字是否为...
阅读 3 分钟
? 在 Java 中,将字符串转换为时间戳涉及将日期和时间的字符串表示形式解析为 java.sql.Timestamp 对象。此过程通常在处理从外部源或用户输入获取的日期和时间数据时需要。在本节中,我们将...
阅读 3 分钟
超级巨星困境是计算机科学中,特别是在算法问题解决领域中经常遇到的经典难题。这个问题可以概括如下。假设有一个有 N 个人的聚会。“名人”意味着每个人都知道某个人,但没有人知道其他人。目标是...
5 分钟阅读
在本节中,我们将学习什么是基数,并创建 Java 程序来查找基数。基数程序经常在 Java 编码面试和学术中出现。基数 基数用于表示数量。基数是计数词...
阅读 3 分钟
? Java 是一种用途广泛且功能强大的编程语言,由于其“一次编写,到处运行”的理念而广受欢迎。实现这一点的关键组件之一是 Java 运行时环境 (JRE)。在本节中,我们将深入探讨 JRE 的作用...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India