当前位置: 首页 > 知识库问答 >
问题:

如何将ImageJ用作单独Java应用程序的库?

程举
2023-03-14

在一个常规的Java应用程序中,我有一个BufferedImage,我想使用ImageJ来操作它。我有一个宏,这正是我需要执行的。我怀疑第一步是制作一个ImagePlus对象,但我不确定如何然后从Java内部在ImagePlus对象上运行一个宏。这里找到的ImageJ教程的第7.3节说:

如果您决定使用ImagePlus作为内部图像格式,您还可以使用ImageJ发行版中的所有插件和宏,以及所有其他ImageJ插件。

但没有说明如何做到这一点。如果有人能向我解释一下,或者给我指点一个这样做的资源,我将非常感激。

共有3个答案

蓝夕
2023-03-14

下面是一个使用imagej的开源项目实现,用于照片共享web应用。

将此作为在应用程序中实现imagej API的参考

http://www.gingercart.com/Home/java-snippets/create-image-thumbnail-in-java-using-imagej-api

庄萧迟
2023-03-14

以下是打开图像、反转并保存回图像的示例代码:

import ij.ImagePlus;
import ij.io.FileSaver;
import ij.process.ImageProcessor;

ImagePlus imgPlus = new ImagePlus("path-to-sample.jpg");
ImageProcessor imgProcessor = imgPlus.getProcessor();
imgProcessor.invert();
FileSaver fs = new FileSaver(imgPlus);
fs.saveAsJpeg("path-to-inverted.jpg");

下面是一个示例代码,演示如何操作图像使其灰度化:

BufferedImage bufferedImage = imgProcessor.getBufferedImage();
for(int y=0;y<bufferedImage.getHeight();y++)
{
    for(int x=0;x<bufferedImage.getWidth();x++)
    {
        Color color = new Color(bufferedImage.getRGB(x, y));
        int grayLevel = (color.getRed() + color.getGreen() + color.getBlue()) / 3;
        int r = grayLevel;
        int g = grayLevel;
        int b = grayLevel;
        int rgb = (r<<16)  | (g<<8)  | b;
        bufferedImage.setRGB(x, y, rgb);
    }
}
ImagePlus grayImg = new ImagePlus("gray", bufferedImage);
fs = new FileSaver(grayImg);
fs.saveAsJpeg("path-to-gray.jpg");

我希望它能帮助你开始:)

李兴安
2023-03-14

以下网站用示例介绍ImageJ API:http://albert.rierol.net/imagej_programming_tutorials.html#ImageJ编程基础

示例包括读取图像,处理像素等。好吧,我猜你也需要经常使用API留档。

 类似资料:
  • 问题内容: 如果我有一个独立的主应用程序。说20堂课。它们都可能随时需要与spring配置(ApplicationContext)定义的bean接口。我将在主应用程序入口点引导类路径应用程序上下文。但是,如何重用已经实例化的bean? 例如,将ClasspathApplicationContext设置为单例似乎是一种不好的方法,但这就是这个主意。 我以为我已经看到了GlobalContextLoc

  • 问题内容: 是否可以以平台无关的方式使用Java应用程序的名称(而不是其位置)在单独的进程中加载​​Java应用程序? 我知道你可以通过…执行程序 …这种方法的主要问题是,此类调用是特定于平台的。 理想情况下,我会将方法包装成像…这样简单的东西。 …并以形式传入应用程序类的完全限定名称。 问题答案: 两个提示: 为你提供了Java可执行文件的路径。 帮助你重构当前应用程序的类路径。 然后你就是(伪

  • 问题内容: 我在处理pyGTK应用程序时遇到一些问题。我给线程一些时间来完成其任务,如果有问题,我还是继续继续,只是警告用户。但是,一旦我继续,该线程就会停止,直到调用gtk.main_quit为止。这让我感到困惑。 相关代码: .................................... 问题答案: 首先,不要继承,使用。 其次,很可能导致您明显的阻塞的原因是它采用了一个默认值为的参

  • 现在假设我们想要使用 Spark API 写一个独立的应用程序。我们将通过使用 Scala(用 SBT),Java(用 Maven) 和 Python 写一个简单的应用程序来学习。 我们用 Scala 创建一个非常简单的 Spark 应用程序。如此简单,事实上它的名字叫 SimpleApp.scala: /* SimpleApp.scala */ import org.apache.spark.S

  • 如果主方法不能使用,我需要一些关于替代解决方案的建议,以满足这个要求。

  • 问题内容: 我正在考虑开发由两部分组成的桌面应用程序: 用户界面(例如Java应用) 后端Node.js服务器 2个部分通过插座连接。不要问为什么我知道这很奇怪。 我将希望能够为客户提供带有安装程序的应用程序。我不希望用户必须自己安装Node.js。 有没有一种方法可以独立安装Node.js服务器,即无需在系统上全局安装Node.js。 对于任何(Windows,Linux,Mac OS X …)