什么是最好的Javaimage processing库/方法?

我正在使用JAI媒体apis和ImageMagick?

ImageMagick有一些可扩展性问题,基于JNI的JMagick也不具有吸引力。 与ImageMagick相比,在进行大小调整操作时,JAI质量不佳。

有没有人知道任何优秀的工具,无论是开源或商业本土Java和提供高质量的结果?

有ImageJ ,这是自信的

世界上最快的纯Javaimage processing程序

它可以在另一个应用程序中用作库。 它的体系结构不是很辉煌,但是它完成了基本的image processing任务。

我知道这个问题是相当古老的,但是随着新软件的出现,它有助于获得一些可能对人们有意思的项目的新链接。

imgscalr是纯Java图像resize(以及简单的操作,如填充,裁剪,旋转,光亮/调暗等),使用起来非常简单 – 一个类由一组简单的graphics操作组成,这些操作全部定义为静态方法你传递一个图像,并得到一个结果。

使用库的最基本的例子如下所示:

 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); } 

所有的image processing操作都使用原始的Java2Dpipe道(在主要平台上进行硬件加速),并且不会引入通过JNI(如图书馆争用)在代码中调用的痛苦。

imgscalr也已经在很多地方被大规模部署 – 包含了AsyncScalr类,使得它成为任何服务器端image processing的理想select。

图像质量有很多调整,您可以使用最高的ULTRA_QUALITY模式在速度和质量之间进行折衷,提供比GIMP的Lancoz3更好的缩放结果。

另一个很好的select: 马文

我不是一个Java的人,但OpenCV非常适合我的需要。 不知道它是否适合你的。 这是一个Java端口,我想: http : //docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html

加工是新的,但非常非常好。

尝试使用Catalano框架 。

关键点:

  • build筑像AForge.NET / Accord.NET。
  • 在两个环境中运行相同的代码,桌面和Android。
  • 包含多个并行的filter。
  • 发展正在全力推进。

Catalano框架是Java和Android的科学计算框架。 该项目作为.NET的许多function的初始端口,并且正在稳步增长,目前正在这些项目之间共享更高级的function。

例:

 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 

最好的方法是使用GraphicsMagick Image Processing System和im4java作为Java的命令行界面。

GraphicsMagick有很多优点,但其中一个好处是:

  • 通用汽车用于处理世界上最大的照片网站(例如Flickr和Etsy)的数十亿文件。

http://im4java.sourceforge.net/ – 如果你正在运行linux fork,一个新的进程并不昂贵。

对于商业工具,你可能想尝试大雪。

http://www.snowbound.com/

我对他们的经验有些过时,但是我发现他们的Java Imaging API比JAI更容易使用,速度也更快。

他们的客户支持和代码样本也非常好。

RoboRealm视觉软件列表提到了JHLabs和NeatVision在很多其他非基于Java的库中的作用。

我不能说这是“最好”的库,但我认为你可以试试这个: http : //algart.net/java/AlgART/它是一个开源的Java库,支持广义的“智能”数组和matrix不同types的元素(从1位到64位浮点),包括二维,三维和多维image processing和其他algorithm,处理数组和matrix。 不幸的是现在它没有足够的演示和例子,但另一方面,它包含了很多的JavaDocs。 它在多年的商业软件(SIMAGIS)的基础上,但现在是开源的。