什么是最好的Java图像处理库/方法? [关闭]
image-manipulation
image-processing
java
7
0

我同时使用JAI媒体API和ImageMagick吗?

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

有谁知道原生Java可以提供高质量结果的任何优秀工具,无论是开源的还是商业的?

参考资料:
Stack Overflow
收藏
评论
共 10 个回答
高赞 时间 活跃

http://im4java.sourceforge.net/-如果您正在运行linux,则派生一个新进程并不昂贵。

收藏
评论

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

http://www.snowbound.com/

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

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

收藏
评论

RoboRealm视觉软件列表在许多其他非基于Java的库提到了JHLabsNeatVision

收藏
评论

我知道这个问题已经很老了,但是随着新软件的问世,它确实有助于获得一些新的项目链接,这些链接可能会让人们感兴趣。

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实现更好的缩放结果。

收藏
评论

ImageJ ,它以

世界上最快的纯Java图像处理程序

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

收藏
评论

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

收藏
评论

imo最好的方法是使用带有im4java的 GraphicsMagick图像处理系统作为Java的命令行界面。

GraphicsMagick有很多优点,但有一个优点:

  • GM用于处理世界上最大的图片网站(例如Flickr和Etsy)上的数十亿个文件。
收藏
评论

我不是Java专家,但是OpenCV非常适合我的需求。不确定是否适合您。我认为这是一个Java端口: http : //docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html

收藏
评论

尝试使用Catalano Framework

关键点:

  • 像AForge.NET/Accord.NET这样的架构。
  • 在相同的代码下(台式机和Android)在两种环境中运行。
  • 包含多个并行的过滤器。
  • 发展蒸蒸日上。

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
收藏
评论

另一个不错的选择: 马文

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号