什么是最好的java图像处理库/方法?

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

ImageMagick有一些可伸缩性问题,基于JNI的JMagick也没有吸引力。 与ImageMagick相比,JAI在进行调整大小操作时的结果质量较差

有谁知道有什么优秀的工具,无论是开源的还是商业的,都是本地java,并提供高质量的结果?

243276 次浏览

处理是新的,但是非常非常好。

对于商业工具,您可能想尝试Snowbound。

http://www.snowbound.com/

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

他们的客户支持和代码示例也非常好。

ImageJ,它自称是

世界上最快的纯Java映像 处理程序< / p >

它可以作为另一个应用程序中的库使用。它的架构并不出色,但它可以完成基本的图像处理任务。

我不是一个Java的人,但OpenCV很适合我的需求。不确定是否适合你的。这是一个Java端口,我认为: http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html < / p >

RoboRealm视觉软件列表在许多其他非java库中提到了JHLabsNeatVision

另一个不错的选择:马文

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

在我看来,最好的方法是使用GraphicsMagick图像处理系统im4java作为Java命令行接口。

GraphicsMagick有很多优点,但有一个是万能的:

  • GM用于处理数十亿 世界上最大的照片档案 网站(例如Flickr和Etsy).

我知道这个问题很老了,但随着新软件的出现,它确实有助于获得一些对人们来说可能很有趣的项目的新链接。

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实现更好。

尝试使用框架也包括

要点:

  • 像AForge.NET/Accord.NET这样的架构。
  • 使用相同的代码在桌面和Android两个环境中运行。
  • 并行包含多个过滤器。
  • 发展如火如荼。

Catalano框架是一个用于Java和Android的科学计算框架。该项目开始于AForge许多特性的初始移植。NET和Accord。NET框架的。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
我不能说它是“最好的”库,但我认为你可以试试这个: http://algart.net/java/AlgART/ 它是一个开源Java库,支持具有不同类型元素(从1位到64位浮点)的广义“智能”数组和矩阵,包括2D、3D和多维图像处理和其他算法,使用数组和矩阵。 不幸的是,目前它还没有包含足够的演示和示例,但是,另一方面,它包含了大量的JavaDocs。它在商业软件(SIMAGIS)的基础上工作了几年,但现在它是开源的