ImageJ二次开发学习纪录之初步体会

ImageJ的相关信息可以直接从其官网了解,从这个网站上可以下载到其运行程序,并可以得到相关的源码,在源码的基本上我们可以进行插件开发。

1)了解插件的类型及其接口:

    a) PlugIn:启动该插件时不需要打开一幅图象
    b) PlugInFilter:启动该插件时,需要传递给该插件一幅打开图象的指针。该插件的操作将施加在该图象上。
    c) PlugInFrame:该插件可以扩展一个独立的操作交互界面。

2)相关程序的运行方式,只要将相关的插件的.java和.class放在源码目录source/plugins下就可以了,可以使用再往下一级的目录进行存放,然后重新编译运行整个ImageJ源码就可以了,它会自己识别source/plugins下的插件,并将插件显示在运行后的程序的Plugins栏目下;

3)为了便于在同一个目录下进行编译和运行,使用了如下的build.xml(引用了整体程序的build.xml),plugins下使用一级目录

source/build.xml

<!-- Ant makefile for ImageJ -->

<project name="ImageJ" default="run">

  <target name="compile" description="Compile everything.">
    <!-- First, ensure the build directory exists. -->
    <mkdir dir="build" />
    <!-- Build everything; add debug="on" to debug -->
    <javac srcdir="." destdir="build" optimize="on" source="1.5" target="1.5" debug="on" includeantruntime="false">
      <!-- The plugins directory only needs to be
             present at runtime, not at build time. -->
      <exclude name="plugins/**"/>
    </javac>
  </target>

  <target name="build" depends="compile" description="Build ij.jar.">
    <!-- Copy needed files into the build directory. -->
    <copy file="IJ_Props.txt" todir="build" />
    <copy file="images/microscope.gif" tofile="build/microscope.gif" />
    <copy file="images/about.jpg" tofile="build/about.jpg" />
    <copy file="plugins/MacAdapter.class" tofile="build/MacAdapter.class" />
    <copy file="plugins/MacClipboard.class" tofile="build/MacClipboard.class" />
    <copy todir="build/macros"><fileset dir="macros"/></copy>
    <!-- Build ij.jar. -->
    <jar jarfile="ij.jar" basedir="build"
         manifest="MANIFEST.MF" />
  </target>

  <target name="clean" description="Delete the build files.">
    <delete dir="build" />
    <delete file="ij.jar" />
    <delete file="./../ij.jar" />
    <delete dir="./../api" />
  </target>

  <target name="run" depends="build" description="Build and run ImageJ.">
    <copy file="ij.jar" toDir=".." />
    <java maxmemory="640m" jar="ij.jar" fork="yes" />
  </target>

  <target name="run2" depends="build" description="Build and run ImageJ.">
    <!-- Run in ImageJ directory -->
    <copy file="ij.jar" toDir=".." />
    <java maxmemory="640m" dir=".." jar="ij.jar" fork="yes" />
  </target>

  <target name="zip" depends="clean" description="Build zrc.zip.">
    <zip zipfile="../src.zip"
       basedir=".."
       includes="source/**"
    />
  </target>

  <target name="javadocs" description="Build the JavaDocs.">
    <delete dir="../api" />
    <mkdir dir="../api" />
    <javadoc
           sourcepath="."
           packagenames="ij.*"
           destdir="../api"
           author="true"
           version="true"
           use="true"
           windowtitle="ImageJ API">
    </javadoc>
  </target>

   </project>

source/plugins/Plugin/build.xml

<?xml version="1.0"?>
<project default="compile" name="Plugin Project" basedir=".">
     <description>My plugin</description>

    <property name="srcDir" location="."/>
    <property name="runDir" location="./../.." />

    <path id="ij">
        <pathelement path=".:./../../ij.jar"/>
    </path>

    <target name="init">
    </target>

    <target name="compile" depends="init">
        <javac srcdir="${srcDir}" destdir="${srcDir}">
            <classpath>
                <path refid="ij" />
            </classpath>
        </javac>
    </target>

    <target name="run" description="run the ImageJ with the external build.xml">
        <antcall target="compile"/>

        <ant antfile="build.xml"
            dir="${runDir}"
            inheritall="true"
            target="run">
        </ant>
    </target>

    <target name="clean">
      <delete>
          <fileset dir="." includes="*.class"/>
      </delete>
    </target>

    <target name="cleanAll">
        <antcall target="clean" />

        <ant antfile="build.xml"
            dir="${runDir}"
            inheritall="true"
            target="clean">
        </ant>
    </target>
</project>
时间: 2024-12-17 11:55:36

ImageJ二次开发学习纪录之初步体会的相关文章

spss C# 二次开发 学习笔记(二)——Spss以及统计术语解释(IT人眼中的统计术语)

针对客户需求,需要对一些数据做统计分析.统计分析的第一步,即为数据查询,查找出要统计分析的数据. 查询得出的是一个行列表格的结果集,行.列.表格等这些IT的数据库概念和Spss以及统计中的术语是如何对应的,这点是刚接触统计这方面的我首先要理清楚的. 变量(Variable)——结果集中的列.可以为数据库表字段,当然也可以使使用函数处理后的,即为表达式. 变量的类型分为字符型和数值型,有长度设置,对于数值有精度设置. 数值型,有数值和数值标签一说,例如性别,如果为字符型,则值为男或者女,如果为数值

spss C# 二次开发 学习笔记(六)——Spss统计结果的输出

Spss的二次开发可以很简单,实例化一个对象,然后启用服务,接着提交命令,最后停止服务. 其中重点为提交命令,针对各种统计功能需求,以及被统计分析的数据内容等,命令的内容可以很复杂,但也可以简单的为一个字符串.命令的获取,可以类似于Office录制宏一样,操作的过程中,Spss输出应用程序会记录命令内容,然后可以参考命令语法手册,去完善命令内容. 而获取输出结果,即获取统计的图.表等内容,功能很强大,当然起初操作起来也有些不可思议.它不是常规的进行统计,然后执行输出命令获取输出结果.Spss的输

spss C# 二次开发 学习笔记(四)——Spss授权

Spss的授权方式有两种,单机版和网络版. Spss的激活,在联网的情况下,通过20位的激活码激活,在未联网的情况下,Spss根据机器获取一个类似4-XXXX的锁定码,然后由激活码和锁定码算出一个授权码,来激活程序. 整个激活过程,可以在IBM网站上处理,申请一个单号,然后注册,然后逐步操作,也可以直接打服务电话,由IBM相关人员帮助处理. 网络版的授权模式为,在证书服务器上安装证书授权管理程序,然后客户机通过证书服务器进行授权,允许在任意客户机上安装Spss并授权,但并发数目收到购买的数量的限

Civil 3D API二次开发学习指南

Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开发学习指南.另外,如果你用到Map 3D相关的功能,你还可能需要Map 3D的开发知识,看Map 3D API二次开发学习指南. 软件准备及开发环境 AutoCAD Civil 3D 软件,推荐2014以上版本,你可以从Autodesk 官方网站下载试用版, Visual Studio 2012 或

spss C# 二次开发 学习笔记(五)——Spss系统集成模式

Spss官方不支持Server2008R2等Server系列,但做Spss的二次开发,调用Spss的Web系统,一般部署在Server系列上,例如Server2008R2. 起初,在Server上安装Spss,总是安装不成功,或者貌似成功了,但是无法激活应用程序,后来咨询后得知,竟然是不支持.从这点来说,Spss的最初定位还是给最终用户操作的,后来增加了程序接口,以便其他系统与其集成. 鉴于此种情况,我需要一台安装有Windows7的机器,然后安装Spss应用程序和Spss.Net插件. 然后,

里外网Ecshop二次开发学习计划

<a>标签的target属性:_blank -- 在新窗口中打开链接 _parent -- 在父窗体中打开链接 _self -- 在当前窗体打开链接,此为默认值 _top -- 在当前窗体打开链接,并替换当前的整个窗体(框架页) 一个对应的框架页的名称 -- 在对应框架页中打开 分别对应的链接或者敲击的url地址以及实际执行的地址. 功能 链接或敲击的url  实际执行的url     对应的Action action对应的方法 首页 / /index.htm index.htm(supply

solidworks二次开发学习(1)如何选中一个草图并遍历草图中的所有直线

1 Imports SolidWorks.Interop.sldworks 2 Imports SolidWorks.Interop.swconst 3 Imports System.Runtime.InteropServices 4 Imports System 5 6 Partial Class SolidWorksMacro 7 8 Public Sub main() 9 10 11 Dim swDoc As ModelDoc2 = Nothing 12 Dim swPart As Par

基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象

1.CAD对象:一个CAD文件(DWG文件)即对应一个数据库,数据库中的所有组成部分,看的见(包括点.多段线.文字.圆等)和看不见(图层.线型.颜色等)的都是对象,数据库本身也是一个对象. 直线.圆弧.文字和标注等图形对象都是对象. 线型与标注样式等样式设置都是对象. 图层.编组和块等组织结构都是对象. 视图与视口等图形显示都是对象. 甚至图形和 AutoCAD 应用程序本身也是对象. 2.CAD中的容器:对于任何一个DWG文件,都会创建下列容器对像:九个固定的符号表(如下)和有名对像字典(包含

solidworks二次开发学习(3)move all of the bodies in a part document。

1 'SolidWorks API Help 2 'Move Bodies Example (VB.NET) 3 'This example shows how to move all of the bodies in a part document. 4 5 '------------------------------------------------------------- 6 ' Preconditions: 7 ' 1. Specified part document to ope