【发布时间】:2023-03-10 21:20:02
【问题描述】:
我已经搜索并找到了一些用于 Java 的图像缩放库。但不确定要和哪一个一起去。我需要从服务器上传的图片生成缩略图。
如果你能分辨出哪个好哪个坏,那就太好了。
我的清单是:
- JMagick
- im4java
- 缩略图器
- java-image-scaling
- 贾伊
【问题讨论】:
标签: java image-processing image-resizing
我已经搜索并找到了一些用于 Java 的图像缩放库。但不确定要和哪一个一起去。我需要从服务器上传的图片生成缩略图。
如果你能分辨出哪个好哪个坏,那就太好了。
我的清单是:
【问题讨论】:
标签: java image-processing image-resizing
对于我的简单需求,Thumbnailator 非常完美。小库;流畅、干净、文档齐全的 API。
在我的情况下,它只是 "net.coobird" % "thumbnailator" % "0.4.8" 依赖和:
//..
Thumbnails.of(originalFile)
.size(300, 300)
.toFile(thumbnailFile)
//..
并且完成。基本上,它是 Java 2D API 之上的友好包装器。对特定(缩略图)需求有用;没有学习曲线。
除非您真的需要对图像进行一些繁重的工作,否则我会警惕依赖外部二进制文件(ImageMagick 和 JMagick 等包装器),这会增加设置的复杂性和移动部件。特别是如果您的堆栈类似于我的堆栈:在 Heroku 上运行的 Scala/Java 应用程序。有heroku-buildpack-imagemagick-cedar-14 之类的东西,是的,但是与应用程序捆绑在一起的简单依赖项会无限干净。
【讨论】:
如果您需要高质量的缩略图,生成缩略图的 Java API 还不够好。
要生成高质量的缩略图,请使用您列出的框架。我试过 ImgScalr (https://github.com/thebuzzmedia/imgscalr) 和 Thumbnailator。 通过我的微基准测试(不能真正用于一般目的的结论)Thumbnailator 更快 - 虽然不是很多,而且更容易 - 特别是在生成具有透明度的缩略图时。
我也尝试了 JMagick,但在编译和设置代码时遇到了问题。也有点担心以后会遇到一个框架的问题,该框架的基本代码是用我根本不懂的语言编写的 - C。
您可能还会发现这里的讨论很有用:How can I resize an image using Java?
【讨论】:
在我的私人项目中,我不使用任何特定的库,为 Java 提供的功能为我提供了不错的结果。如果你只想做图片缩放,那么一个完整的图片处理库就太重了。
我使用http://www.mkyong.com/java/how-to-resize-an-image-in-java/中给出的代码sn-ps,效果很好。
【讨论】: