========================================================================
- OpenJPIP software 1.0 ReadMe
+ OpenJPIP software 2.1 ReadMe
OpenJPEG:
http://www.openjpeg.org
( For more info about JPIP, check the website: http://www.jpeg.org/jpeg2000/j2kpart9.html)
The current implementation uses some results from the 2KAN project (http://www.2kan.org).
-First Version 1.0 covers:
- - JPT-stream (Tile based) media types
+Version 2.1 covers:
+ - JPT-stream (Tile) and JPP-stream (Precinct) media types
- Session, channels, cache model managements
- - JPIP over HTTP
+ - JPIP over HTTP, HTTP requests and TCP return
- Indexing JPEG 2000 files
- Embedding XML formatted metadata
- Region Of Interest (ROI) requests
+ - Access to JP2 files with their URL
----------
2. License
3. System requirements
----------
- - OpenJPEG library (currently assumes it is installed on the system => will not use the one built higher in the directory structure)
- FastCGI development kit (C libraries) at server (http://www.fastcgi.com)
+ - libcURL library
- Java application launcher at client
- - Kakadu software ( http://www.kakadusoftware.com). Currently required to encode jpeg 2000 images with tile-parts. This will be implemented soon in openjpeg, making this requirement obsolete.
<Optional>
- Xerces2 java XML parser on the client for accessing embedded image metadata (http://xerces.apache.org/xerces2-j)
A Makefile is available in the same directory as this README file. Simply type 'make' and it will build all the required C-executables.
Concerning the java-based opj_viewer, simply type 'ant' in the corresponding directory (requires 'ant' utility of course)
-CMake files ar planned to be included ASAP.
-
The documentation can be build this way (requires doxygen utility):
cd doc
doxygen Doxyfile
2. Launch opj_server from the server terminal:
% spawn-fcgi -f ./opj_server -p 3000 -n
+
+ For shutting down JPIP server:
+ %GET http://hostname/myFCGI?quitJPIP
+ Notice, http://hostname/myFCGI is the HTTP server URI (myFCGI refers to opj_server by the server setting)
+ Requst message "quitJPIP" can be changed in Makfile, modify -DQUIT_SIGNAL=\"quitJPIP\"
Client:
1. Launch image decoding server, and keep it alive as long as image viewers are open
- % ./opj_dec_server
+ % ./opj_dec_server [portnumber (50000 by default)]
You might prefer to implement this program from another directory since cache files are saved in the working directory.
% mkdir cache
% ../opj_dec_server
2. Open image viewers (as many as needed)
- % java -jar opj_viewer.jar http://hostname/myFCGI JP2_filename.jp2
+ % java -jar opj_viewer.jar http://hostname/myFCGI path/filename.jp2 [hostname] [portnumber] [stateless/session] [jptstream/jppstream] [tcp/udp]
( The arguments
- http://hostname/myFCGI is the HTTP server URI (myFCGI refers to opj_server by the server setting)
- - JP2_filename.jp2 is the name of a JP2 file available on the server.)
+ - path/filename.jp2 is the server local path or URL of a JP2 file
+ - host name of opj_dec_server, localhost by default
+ - portnumber of opj_dec_server, 50000 by default
+ - request type stateless for no caching, session (default) for caching
+ - return media type, JPT-stream tile based stream, or JPP-stream (default) precinct based stream
+ - auxiliary return protocol, tcp or udp (udp is not implemented yet), if not given, return data is filled in http chunk
Image viewer GUI instructions:
Scale up request: Enlarge the window
ROI request: Select a region by mouse click and drag, then click inside the red frame of the selected region
Open a new window presenting an aligned image with a locally stored image: Click button "Image Registration" (Under Construction)
3. Quit the image decoding server through the telnet, be sure all image viewers are closed
- % telnet localhost 5000
+ % telnet localhost 50000
quit
----------
----------
An example to encode a TIF image "copenhague1.tif" at resolution 4780x4050, 8bit/pixel, grayscale.
+ % ./image_to_j2k -i copenhague1.tif -o copenhague1.jp2 -p RPCL -c [64,64] -t 640,480 -jpip -TP R
- 1. J2K encoding using Kakadu with an option which introduces the tile-part flag at each resolution level
- % ./kdu_compress -i copenhague1.tif -o copenhague1.j2k Corder=RPCL ORGtparts=R Stiles={256,256}
-
- 2. JP2 encoding with embedding indexing data
- % ./index_create copenhague1.j2k copenhague1.jp2 2
+ options
+ -jpip : embed index table 'cidx' box into the output JP2 file (obligation for JPIP)
+ -TP R : partition a tile into tile parts of different resolution levels (obligation for JPT-stream)
<Option>
3. Embed metadata into JP2 file