我同时使用JAI媒体API和ImageMagick吗?
ImageMagick存在一些可伸缩性问题,基于JNI的JMagick也没有吸引力。与ImageMagick相比,JAI执行大小调整操作时的质量结果较差。
有谁知道过任何出色的开源或商业工具,它们都是本机Java并能提供高质量的结果?
java image processing library
但照常关闭。这些天来,适度性太过分了。
我同时使用JAI媒体API和ImageMagick吗?
ImageMagick存在一些可伸缩性问题,基于JNI的JMagick也没有吸引力。与ImageMagick相比,JAI执行大小调整操作时的质量结果较差。
有谁知道过任何出色的开源或商业工具,它们都是本机Java并能提供高质量的结果?
java image processing library
但照常关闭。这些天来,适度性太过分了。
Answers:
我知道这个问题已经很老了,但是随着新软件的问世,它确实有助于获得人们可能感兴趣的项目的新链接。
imgscalr是纯Java图像大小调整(以及诸如填充,裁剪,旋转,变亮/变暗等简单操作)库,使用起来非常痛苦-单个类由一组简单的图形操作组成,这些操作均定义为静态方法,您传递图像并返回结果。
使用该库的最基本示例如下所示:
BufferedImage thumbnail = Scalr.resize(image, 150);
通过一些质量调整等更典型的用法来生成图像缩略图可能看起来像这样:
import static org.imgscalr.Scalr.*;
public static BufferedImage createThumbnail(BufferedImage img) {
// Create quickly, then smooth and brighten it.
img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);
// Let's add a little border before we return result.
return pad(img, 4);
}
所有图像处理操作都使用原始Java2D管道(在主要平台上已通过硬件加速),不会像代码中的库争用那样引入通过JNI进行调用的麻烦。
imgscalr也已在许多地方大规模生产中使用-包含AsyncScalr类使其成为任何服务器端图像处理的理想选择。
可以使用最高的ULTRA_QUALITY模式对图像质量进行大量调整,以在速度和质量之间进行权衡,从而提供比GIMP Lancoz3实现更好的缩放结果。
另一个不错的选择:马文
我不是Java专家,但是OpenCV非常适合我的需求。不确定是否适合您。我认为这是一个Java端口:http : //docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html
处理是新的,但是非常非常好。
尝试使用Catalano Framework。
关键点:
Catalano框架是用于Java和Android的科学计算的框架。该项目最初是用于.NET的AForge.NET和Accord.NET框架的许多功能的最初移植,但是随着更高级的功能稳步增长,现在这些项目之间正在共享这些功能。
例:
FastBitmap fb = new FastBitmap(bitmap);
Grayscale g = new Grayscale();
g.applyInPlace(fb);
Threshold t = new Threshold(120);
t.applyInPlace(fb);
bitmap = fb.toBitmap();
//Show the result
The best framework in Java is Catalano Framework
听起来您在宣传自己的产品。您的框架可能很棒,但是您应该按照FAQ中的说明披露与它的隶属关系。
imo最好的方法是使用带有im4java的GraphicsMagick图像处理系统作为Java的命令行界面。
GraphicsMagick有很多优点,但有一个优点:
http://im4java.sourceforge.net/-如果您正在运行linux,则派生一个新进程并不昂贵。
对于商业工具,您可能想要尝试Snowbound。
我对他们的经验有些过时,但是我发现他们的Java Imaging API比JAI易于使用,而且速度更快。
他们的客户支持和代码示例也非常好。
我不能说这是“最好的”库,但是我想您可以尝试以下方法:http : //algart.net/java/AlgART/ 这是一个开放源代码的Java库,通过以下方式支持通用的“智能”数组和矩阵使用数组和矩阵的不同类型(从1位到64位浮点)的元素,包括2D,3D和多维图像处理以及其他算法。不幸的是,目前它没有足够的演示和示例,但另一方面,它包含许多JavaDocs。几年来,它奠定了商业软件(SIMAGIS)的基础,但是现在它是开源的。