什么是最好的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,一个新的进程并不昂贵。
对于商业工具,你可能想尝试大雪。
我对他们的经验有些过时,但是我发现他们的Java Imaging API比JAI更容易使用,速度也更快。
他们的客户支持和代码样本也非常好。
RoboRealm视觉软件列表提到了JHLabs和NeatVision在很多其他非基于Java的库中的作用。
我不能说这是“最好”的库,但我认为你可以试试这个: http : //algart.net/java/AlgART/它是一个开源的Java库,支持广义的“智能”数组和matrix不同types的元素(从1位到64位浮点),包括二维,三维和多维image processing和其他algorithm,处理数组和matrix。 不幸的是现在它没有足够的演示和例子,但另一方面,它包含了很多的JavaDocs。 它在多年的商业软件(SIMAGIS)的基础上,但现在是开源的。