我正在使用JAI媒体api和ImageMagick?
ImageMagick有一些可伸缩性问题,而且基于JNI的JMagick也没有吸引力。 与ImageMagick相比,在进行调整大小操作时,JAI的结果质量较差。
有谁知道有什么优秀的工具,无论是开源的还是商业的,都是本地java,并提供高质量的结果?
我正在使用JAI媒体api和ImageMagick?
ImageMagick有一些可伸缩性问题,而且基于JNI的JMagick也没有吸引力。 与ImageMagick相比,在进行调整大小操作时,JAI的结果质量较差。
有谁知道有什么优秀的工具,无论是开源的还是商业的,都是本地java,并提供高质量的结果?
当前回答
我知道这个问题很老了,但随着新软件的出现,它确实有助于获得一些对人们来说可能很有趣的项目的新链接。
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实现更好。
其他回答
http://im4java.sourceforge.net/ -如果你正在运行Linux,那么创建一个新的进程并不昂贵。
I cannot say that it is the "best" library, but I think you can try this: http://algart.net/java/AlgART/ It is an open-source Java library, supporting generalized "smart" arrays and matrices with elements of different types (from 1 bit to 64-bit floating point), including 2D-, 3D- and multidimensional image processing and other algorithms, working with arrays and matrices. Unfortunately right now it consists not enough demo and examples, but, on the other hand, it contains a lot of JavaDocs. It lay in the base of commercial software (SIMAGIS) during several years, but now it is open-source.
加工技术很新,但是非常非常好。
在我看来,最好的方法是使用GraphicsMagick图像处理系统和im4java作为Java的命令行接口。
GraphicsMagick有很多优点,但有一个是万能的:
通用汽车被用来处理数十亿 世界上最大的照片档案 网站(例如Flickr和Etsy)。
我不懂Java,但OpenCV很适合我的需求。不确定是否适合你的。这是一个Java端口,我认为: http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html