我搜索过并找到了一些Java的图像缩放库。但不确定与哪一个相关。我需要从服务器上传的图片中生成缩略图。
如果你能分辨哪一个好坏,那就太好了。
我的清单是:
答案 0 :(得分:7)
对于我的简单需求,Thumbnailator是完美的。小lib;流畅,干净,文档齐全的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
之类的东西,是的,但是与应用程序捆绑在一起的简单依赖项是无限清晰的。
答案 1 :(得分:6)
如果您需要高质量的缩略图,则生成缩略图的Java API不够好。
要生成高质量的缩略图,请使用与您列出的框架类似的框架。我尝试过ImgScalr(https://github.com/thebuzzmedia/imgscalr)和Thumbnailator。 使用我的微基准测试(不能真正用于通用结论)Thumbnailator更快 - 虽然不是很多,而且更容易 - 尤其是在生成透明度的缩略图时。
我也尝试了JMagick,但遇到的问题只是编译代码并进行设置。还有点担心稍后会遇到一个框架,其基本代码是用我根本不懂的语言编写的 - C。
您可能还会在此处找到有用的讨论:How can I resize an image using Java?
答案 2 :(得分:4)
在我的私人项目中,我没有使用任何特定的库,为Java提供的功能为我提供了不错的结果。如果你只是想进行图像缩放,那么一个完整的图像处理库就会过于沉重。
我使用http://www.mkyong.com/java/how-to-resize-an-image-in-java/中提供的代码片段,效果非常好。