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>
原文地址:https://www.cnblogs.com/kinthon/p/4776856.html