gpt4 book ai didi

java - 在 Java 中缩放图像的最佳方法是什么?

转载 作者:搜寻专家 更新时间:2023-10-30 21:04:08 26 4
gpt4 key购买 nike

我有一个用 Java(Spring、Hibernate/JPA、Struts2)编写的 Web 应用程序,用户可以在其中上传图像并将它们存储在文件系统中。我想缩放这些图像,以便它们在网站上显示时大小一致。哪些库或内置函数会提供最好的结果?在做出决定时,我会考虑以下标准(按此顺序):

  • 免费/开源(必要)
  • 易于实现
  • 结果质量
  • 表现
  • 可执行文件的大小

最佳答案

我真的建议您看一下 imgscalr。

它是根据 Apache 2 许可证发布的,托管在 GitHub 上,已经部署在少数 Web 应用程序中,有一个非常简单但文档化的 API,有代码可以解决 JDK 中的 2 个主要图像错误,透明地为您提供,只有当您突然开始“变黑”时,您才会注意到"缩放操作后的图像或可怕的结果,为您提供 Java 中可用的最佳外观结果,可通过 Maven 和 ZIP 获得,并且只是一个类。

基本用法如下所示:

BufferedImage img = ImageIO.read(...); // load image
BufferedImage scaledImg = Scalr.resize(img, 320);

这是最简单的调用,库将对质量进行最佳猜测,遵守您的图像比例,并将结果放入 320x320 边界框内。请注意,边界框只是使用的最大 W/H,因为您的图像比例得到尊重,生成的图像仍会接受这一比例,比如 320x200。

如果你想覆盖自动模式并强制它给你最好看的结果,甚至对结果应用非常温和的抗锯齿过滤器以使其看起来更好(特别适合缩略图),该调用将看起来像:

BufferedImage img = ImageIO.read(...); // load image
BufferedImage scaledImg = Scalr.resize(img, Method.QUALITY,
150, 100, Scalr.OP_ANTIALIAS);

这些都只是示例,API 范围广泛,涵盖了从 super 简单的用例到非常专业的所有用例。您甚至可以传入自己的 BufferedImageOps 以应用于图像(库会自动为您修复 6 年的 BufferedImageOp JDK 错误!)

要在 Java 中成功缩放图像,比库为您做的要多得多,例如,在对图像进行操作时始终将图像保持为最受支持的 RGB 或 ARGB 图像类型之一。在幕后,如果用于任何图像操作的图像类型不受支持,Java2D 图像处理管道会退回到劣质软件管道。

如果这一切听起来很令人头疼,那有点……这就是我编写库并将其开源的原因,这样人们就可以调整图像大小并继续他们的生活,而无需担心

希望对您有所帮助。

关于java - 在 Java 中缩放图像的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/816548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com