Software by Neil Moomey

Paint Shop Pro Scripts

Paint Shop Pro is a powerful image editor similar to PhotoShop. Custom scripts can be written in Python to automate tasks. Unzip these scripts I created and place them in your C:\Program Files\Jasc Software Inc\Paint Shop Pro 8\Scripts-Trusted folder or similar. They will then be visible in your scripts dropdown toolbar in PSP. Click the run button to run each script. I think Jasc added the Python scripting in version 8.

-- Image Resizer: This script will resize all images which are open in PSP to the specified maximum width and height.
-- Web Photo Gallery Creator: This script is similar to the Image Resizer except it creates an html page to display the images it resized.
-- ASONP Photo Gallery Resizer: I designed this script for my photoclub to prepare images for our website. It resizes each image twice, one at 500 pixels and a thumbnail at 100 pixels and saves them. You might find it useful for your own website.

Language: Python

GUI: Tkinter and Paint Shop Pro

(Unzip to C:\Program Files\Jasc Software Inc\Paint Shop Pro 8\Scripts-Trusted)

Prerequisites: Paint Shop Pro 8 and above

EXIF Reader Library for C#

Digital cameras embed information in their images such as exposure information, camera settings, camera, lens, and manufacture information. I wrote this library to access this information with Microsoft's C# language. It currently supports over 35 tags. Programmers can use this library in their projects such as my Slide Show program below.

Example of use:
ExifReader r = new ExifReader("C:\\photos\\img_001.jpg");
Console.WriteLine("Exposure Time: " + r.GetExposureTime() + " Sec");

You can also run this as a stand alone Console Program like this:
ExifReader "C:\photos\img_001.jpg"

Language: C# (C Sharp)

GUI: None

Source code: ExifReader.cs

Executable: ExifReader.exe

Prerequisites: .Net Framework

Here is a sample output of a few of the tags:
Make: Canon
Model: Canon EOS 10D
White Balance: Auto
Exposure Time: 1/1000 Sec
Exposure Program: Shutter Priority
ISO: 400
Exposure Bias Value: -0.5
FocalLength: 85
Flash: No Flash
EXIF Version: 2.20

Slide Show, C# Edition

I wrote this program for my photo club. We needed a simple way to display our images full screen at our meetings. The program launches a File Chooser . After you select the first image to display it goes to full screen mode with a black background and no border. Use arrow keys, Page Down/Up, or Home, End to navigate. Delete will move it to a folder called _Delete, C will copy to _Copy, R will rotate right, L will rotate left, the space bar will display detailed EXIF info, and Esc will exit the program. You can toggle on/off the EXIF footer info with F1, and toggle on/off the Auto-Rotate feature with F2. Because this is written in C# you need the .Net (Dot Net) Framework. This program is also a great way to select your best images like you would on a light table because it can display images faster than PhotoShop and you can quickly move images to the Delete Folder.

Language: C# (C Sharp)

GUI: Windows Forms

Source code: Form1.cs and ExifReader.cs or zip file.

Executable: Slideshow_04.exe

Prerequisites: .Net Framework


Slide Show, Java Edition

I originally created my Slide Show program in Java but was not happy with it's performance on large images so I stopped development. To run this on Windows or Mac save the jar file to your desktop and just double click on it. For linux use java -jar SlideShow.jar. You need Java 1.4 or above.

Language: Java 2

GUI: Swing

Java executable jar file with source code: SlideShow.jar

Prerequisites: Java JRE 1.4


GIS Shapefile Viewer

This is a simple GIS Shapefile Viewer I created using the Open Source Geotools library. It can view GIS data in the popular ArcView format. You can view multiple layers at once. Shapefile data can be viewed from your hard drive or from a URL. It offers a zoom and pan toolbar. It's a great way to view GIS data on any Java enabled device. Because I use Java 1.1 it works well with PDAs such as the IPAQ or Zaurus. It will also run on Linux and Mac OS X and it's free. GeoTools is a powerful library which can do much more so you can add on to this viewer if you wish.

Language: JDK 1.1 and Personal Java.

GUI: AWT (Abstact Widowing Toolkit)

Source Code:

Download the complete package with GeoTools library:

Download sample data

Note, to install unzip the file and read the Readme file. Unzipping the data files is not required.

This is a similar viewer I created with ESRI's Map Objects for Java, a powerful library for creating GIS GUIs. ESRI has a 60 day demo you can order if you wish to try this out. Simply add their Jar file to your CLASSPATH and run this viewer with java GISViewerESRI <shapefile1> <shapefile2> ...etc. This viewer is so intuitive and easy to use it's a great way to display a custom map on a live CD. I could easily customize it for special projects.

Language: Java 2

GUI: Swing

Source Code: and

Download the complete package :

Prerequisites: Java JRE 1.4

Image Tag Builder

For people who prefer a text editor for HTML I created this program to create html img tags. To use this program simply browse to the images on your PC and copy and paste the img tag it creates to your html page. Use the Ctrl key to select multiple images. For example: opening photo1.jpg will produce

 <img src="photo1.jpg" alt="photo1" border="0" width="300" height="196">

I created the ImgTagBuilder class. The code for the File Chooser with thumbnail preview is from the Swing Tutorial which I modified for this project.

Language: Java 2

GUI toolkit: Swing

Source Code:

Documentation: JavaDocs

Prerequisites: Java JRE 1.4

ImgTagBuilder_screenshot1 ImgTagBuilder_screenshot2

(Note: This requires Java WebStart .  I signed the JAR file with a free self signed certificate so there is no Certificate Authority to vouch for my identity.  The $100/year cert is not in my budget.)

Neil's JPEG Browser

I created this program because I wanted an easy to use browser for viewing JPEG images.  To use this program you simply select a folder on your file system and it displays a list of JPEG images in that folder.  Use the up and down arrow keys to navigate.

Language: Java 2

GUI toolkit: Swing

Source Code: (I used two classes.  The main method is in the first class.)


Prerequisites: Java

(Note: This requires Java WebStart .  I signed the JAR file with a free self signed certificate.)


Neil's JPEG Browser II

Language: Java 2

GUI toolkit: Swing

Source Code: unzip the jar file.

Download executable jar file: JpegBrowser2.jar

Prerequisites: Java JRE 1.4

(Double click on the jar file to execute, or right click and open with javaw, or use at command line: java -jar JpegBrowser2.jar)

I did a complete rewrite of my JPEG Browser in 2003. This one uses a Windows Explorer like file tree structure I invented for navigation. It also displays the EXIF Metadata produced by digital cameras. It currently only supports viewing JPEG GIF, AND PNG images. Folders are displayed first followed by filenames in the tree. Use up and down arrows or the mouse to navigate. The dropdown menu is to select the drive. My webstart version was too slow for some reason so I only produced an executable jar file. This program requires Java 1.4 or greater.

Click image for larger screenshot




Neil's RPN Calculator

This Scientific calculator uses RPN Logic (Reverse Polish Notation) similar to the HP Engineering Calculator I used in college. For example: To add 2 and 3 use "2 Enter 3 +." Everytime you press Enter it adds the number to the stack. It's designed for the Zaurus PDA but runs just fine with the Standard Edition (J2SE) so you can run it on your PC as well. It could also be repackaged for the IPAQ with the Jeode JVM installed. To launch this calculator look for the RPN icon in the Jeode Folder.

Language: Personal Java (Same as JDK 1.1)

GUI: AWT (Abstact Widowing Toolkit)

Source Code:

Zaurus IPK package: RPN_Calculator_0_6.ipk


4 Column Spreadsheet

This program uses PHP and MySQL to create a 4 Column Spreadsheet web page.  This spreadsheet is unique because it allows you to search, view, add, edit, delete, and sort by column all on the same page. This script can use any MySQL table with 4 columns (fields).  The first column must be an auto_increment integer named "id" but the rest you an rename using the config variables.   If you currently use PHP and MySQL it's very easy to set up.  

Language: PHP, Java Servlet, or JSP

GUI: Browser based

Source Code:
  PHP Version: Spreadsheet.php
  Java Servlet Version:
  JSP Version: Spreadsheet.jsp

Example: Test Drive the PHP version here!

Type Converter Library

A common source of frustration for Java programmers is strongly typed variables. I created this class to help solve that problem. Use this static class to easily convert any Java type to any other Java type. Works with byte, double, float, int, long, short, and String. It includes error checking to warn you when exceeding the range of a data type. Just add the jar file to your CLASSPATH and follow this example. Because it's a static class you don't need to create an object to use it.

Example of use:
import com.neilmoomey.util.Type;
String s = "12345.6789";
float f = Type.toFloat(s);

Language: Java 1.0 and up

GUI: None

Source Code:

Download the jar file: type_converter.jar

Documentation: JavaDocs

You can download the latest J2SE JRE from Sun here:  Java -- Get it now

Intructions for download and installing the .Net (Dot Net) Framework can be found here.