Author: niallp Date: Sat Jul 11 02:59:46 2009 New Revision: 793168 URL: http://svn.apache.org/viewvc?rev=793168&view=rev Log: Add Sanselan site as a possible alternative to Confluence
Added: commons/proper/sanselan/trunk/src/site/xdoc/formatsupport.xml (with props) commons/proper/sanselan/trunk/src/site/xdoc/gettingstarted.xml (with props) commons/proper/sanselan/trunk/src/site/xdoc/history.xml (with props) commons/proper/sanselan/trunk/src/site/xdoc/index.xml (with props) commons/proper/sanselan/trunk/src/site/xdoc/justification.xml (with props) commons/proper/sanselan/trunk/src/site/xdoc/references.xml (with props) commons/proper/sanselan/trunk/src/site/xdoc/sampleimages.xml (with props) commons/proper/sanselan/trunk/src/site/xdoc/sampleusage.xml (with props) commons/proper/sanselan/trunk/src/site/xdoc/todo.xml (with props) commons/proper/sanselan/trunk/src/site/xdoc/whysanselan.xml (with props) Modified: commons/proper/sanselan/trunk/src/site/site.xml Modified: commons/proper/sanselan/trunk/src/site/site.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/site.xml?rev=793168&r1=793167&r2=793168&view=diff ============================================================================== --- commons/proper/sanselan/trunk/src/site/site.xml (original) +++ commons/proper/sanselan/trunk/src/site/site.xml Sat Jul 11 02:59:46 2009 @@ -33,6 +33,18 @@ <item name="Download" href="/download_sanselan.cgi"/> </menu> + <menu name="Documentation"> + <item name="Why Use Sanselan" href="/whysanselan.html"/> + <item name="Getting Started" href="/gettingstarted.html"/> + <item name="Sample Usage" href="/sampleusage.html"/> + <item name="Format Support" href="/formatsupport.html"/> + <item name="Status & History" href="/history.html"/> + <item name="Justification" href="/justification.html"/> + <item name="References" href="/references.html"/> + <item name="Sample Images" href="/sampleimages.html"/> + <item name="To Do" href="/todo.html"/> + </menu> + </body> </project> Added: commons/proper/sanselan/trunk/src/site/xdoc/formatsupport.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/formatsupport.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/formatsupport.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/formatsupport.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,192 @@ +<?xml version="1.0"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<document> + <properties> + <title>Building</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> +<body> +<!-- ================================================== --> +<section name="Format Support"> + +<table> + <tr> + <th>Format</th> + <th>Read</th> + <th>Write</th> + <th>Notes</th> + <th>References</th> + </tr> + + <!-- PNG Format --> + <tr> + <td>PNG</td><td>yes</td><td>yes</td> + <td> + Supported through version 1.2/ISO/IEC standard (15948:2003). + Controlling the exact format when writing is incomplete. + </td> + <td> + <a href="http://www.libpng.org/pub/png/">spec</a> + <a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics">wikipedia</a> + </td> + </tr> + + <!-- GIF Format --> + <tr> + <td>GIF</td><td>yes</td><td>yes</td> + <td> + Both versions 87a and 89a Reading of animated GIFs is supported to the extent that + you can read all of the images contained in a GIF, but timing/loop info is ignored. + Controlling the exact format when writing is incomplete. + </td> + <td> + <a href="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">spec</a> + <a href="http://en.wikipedia.org/wiki/GIF">wikipedia</a> + </td> + </tr> + + <!-- TIFF Format --> + <tr> + <td>TIFF</td><td>yes</td><td>yes</td> + <td> + Supported through version 6.0. TIFFs is a open-ended container format, so it's not + possible to support every possibly variation. JPEG-compressed TIFFs are not supported. + Supports Bi-Level, Palette/Indexed, RGB, CMYK, YCbCr, CIELab and LOGLUV images. + Supports LZW, CCITT/Huffman and Packbits/RLE compression. Notably missing other forms + of compression, though, including CCITT 4 and 6 bilevel and JPEG. + Supports Tiled images. + </td> + <td> + <a href="http://partners.adobe.com/public/developer/tiff/index.html">Adobe</a> + <a href="http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf">spec</a> + <a href="http://en.wikipedia.org/wiki/TIFF">wikipedia</a> + <a href="http://www.awaresystems.be/imaging/tiff/tifftags.html">AWare Systems TIFF Tag Reference</a> + </td> + </tr> + + <!-- JPEG/JFIF Format --> + <tr> + <td>JPEG/JFIF</td><td>no</td><td>no</td> + <td> + Can read image info, metadata and extract ICC Profiles. Both JFIF and DCF/EXIF. + </td> + <td> + <a href="http://www.jpeg.org/public/jfif.pdf">JFIF spec</a> + <a href="http://www.jpeg.org/jpeg/index.html">JPEG Group</a> + <a href="http://en.wikipedia.org/wiki/JPEG">wikipedia</a> + </td> + </tr> + + <!-- JPEG/JFIF EXIF Metadata --> + <tr> + <td>JPEG/JFIF EXIF Metadata</td><td>yes</td><td>yes</td> + <td> + Can read and write EXIF data to and from exsiting JPEG/JFIF files WITHOUT modifying image data. + </td> + <td> + <a href="http://www.exif.org/">Exif Specs, etc.</a> + <a href="http://en.wikipedia.org/wiki/Exif">wikipedia</a> + <a href="http://www.awaresystems.be/imaging/tiff/tifftags.html">AWare Systems TIFF Tag Reference</a> (JPEG EXIF metadata is stored in TIFF directories) + <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/index.html">Phil Harvey's exiftool and metadata reference</a> + <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/writing.html">Phil Harvey on writing EXIF</a> + </td> + </tr> + + <!-- JPEG/JFIF IPTC Metadata --> + <tr> + <td>JPEG/JFIF IPTC Metadata</td><td>yes</td><td>soon</td> + <td> + Can read IPTC data from exsiting JPEG/JFIF files WITHOUT modifying image data. + </td> + <td> + <a href="http://www.iptc.org/cms/site/index.html?channel=CH0108">IPTC Specs, etc.</a> + <a href="http://en.wikipedia.org/wiki/IPTC_(image_meta-data)">wikipedia</a> + <a href="http://www2.computer.org/portal/web/csdl/doi/10.1109/MMUL.2005.50">IEEE article</a> + </td> + </tr> + + <!-- BMP Format --> + <tr> + <td>BMP</td><td>yes</td><td>yes</td> + <td> + Mostly Complete. May not read some cursors, icons and OS/2 bitmaps. + Controlling the exact format when writing is incomplete. + </td> + <td> + No spec, see: + <a href="http://en.wikipedia.org/wiki/Windows_bitmap">wikipedia</a> + </td> + </tr> + + <!-- ico Format --> + <tr> + <td>ico</td><td>yes</td><td>no</td> + <td> + Not complete. Can do simple reads. + </td> + <td> + No spec, see: + <a href="http://en.wikipedia.org/wiki/ICO_(icon_image_file_format)">wikipedia</a> + </td> + </tr> + + <!-- PNM/PGM/PBM/PPM Portable Pixmap --> + <tr> + <td>PNM/PGM/PBM/PPM Portable Pixmap</td><td>yes</td><td>yes</td> + <td> + Complete. + </td> + <td> + No spec, see: + <a href="http://en.wikipedia.org/wiki/Portable_pixmap">wikipedia</a> + </td> + </tr> + + <!-- PSD/Photoshop Format --> + <tr> + <td>PSD/Photoshop</td><td>yes</td><td>no</td> + <td> + Basic support. Can only read the first Layer. No support for extra channels. + Supports all modes except Multichannel. Can read some image metadata. + </td> + <td> + <a href="http://www.fileformat.info/format/psd/egff.htm">Unofficial spec</a> + <a href="http://www.fileformat.info/format/psd/egff.htm">spec</a> + <a href="http://en.wikipedia.org/wiki/PSD">wikipedia</a> + </td> + </tr> + + <!-- XMP Format --> + <tr> + <td>XMP</td><td>yes</td><td>yes</td> + <td> + Can read XMP XML (as as String) from TIFF, GIF, PNG, JPEG and PSD. + Can embed XMP XML when writing GIF, PNG and TIFF. + Can remove, insert and update XMP XML into existing JPEG files. + </td> + <td> + <a href="http://www.adobe.com/devnet/xmp/">Adobe site with Spec</a> + <a href="http://en.wikipedia.org/wiki/Extensible_Metadata_Platform">wikipedia</a> + </td> + </tr> + +</table> + +</section> +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/formatsupport.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/formatsupport.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: commons/proper/sanselan/trunk/src/site/xdoc/gettingstarted.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/gettingstarted.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/gettingstarted.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/gettingstarted.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,74 @@ +<?xml version="1.0"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<document> + <properties> + <title>Building</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> +<body> +<!-- ================================================== --> +<section name="Requirements"> + +<p> + <ul> + <li>Sanselan requires Java 1.4 or higher. It could easily be converted to require only 1.2.</li> + <li>The question of porting to J2ME has been raised, but not yet pursued.</li> + <li>Sanselan has no dependencies.</li> + <li>It does not use ImageIO/AWT.</li> + </ul> +</p> + +</section> + +<section name="Getting Started"> + +<p> + <ul> + <li>Download the latest release from the <a href="download_sanselan.cgi">download page</a>.</li> + <li>Add the jar to your project's classpath.</li> + <li>See our <a href="samplecode.html">Sample Code</a> for examples.</li> + <li>Refer to the project's <a href="api-release/index.html">javadoc</a></li> + <li>Have questions? Subscribe to the commons user <a href="mail-lists.html">mailing list</a>.</li> + </ul> +</p> + +</section> + +<section name="Building from the latest Source"> +<p> + There are two steps to building Commons Sanselan from the latest source: + <ul> + <li>Check out the latest source from <a href="source-repository.html">Subversion</a></li> + <ul> + <li>1. mkdir sanselan-snapshot</li> + <li>2. cd sanselan-snapshot</li> + <li>3. svn checkout <a href="https://svn.apache.org/repos/asf/incubator/sanselan/">https://svn.apache.org/repos/asf/incubator/sanselan/</a></li> + </ul> + <li>Build using <a href="http://maven.apache.org">Maven 2</a></li> + <ul> + <li>1. Install the latest version of Maven</li> + <li>2. cd sanselan-snapshot (if you are not already in the project directory)</li> + <li>3. mvn -Prc package</li> + <li>4. The build will be in the "target" folder.</li> + </ul> + </ul> +</p> +</section> + +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/gettingstarted.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/gettingstarted.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: commons/proper/sanselan/trunk/src/site/xdoc/history.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/history.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/history.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/history.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,169 @@ +<?xml version="1.0"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<document> + <properties> + <title>Building</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> +<body> +<!-- ================================================== --> +<section name="Project Status and History"> + +<p> + Version 0.90 released January 31st, 2008. + <ul> + <li>Added some convenience functions for reading and writing GPS data.</li> + <li>These are demonstrated in the metadata sample usage classes.</li> + </ul> +</p> + +<p> + Version 0.89 released January 22nd, 2008. <b>This release was mislabeled as 0.88</b> + <ul> + <li>Added EXIF insert/update/remove functionality. See WriteExifMetadataExample.java for examples.</li> + <li>Rewrote JPEG and TIFF parsing.</li> + <li>Greatly elaborated the unit test suite and test image suite.</li> + <li>In the process found and resolved many bugs.</li> + <li>Once again, I hope this is the last non-apache release. =)</li> + </ul> +</p> + +<p> + Version 0.88 released November 17th, 2007. + <ul> + <li>Restored original package structure. (org.apache.sanselan.* -> org.cmc.sanselan.*)</li> + <li>Refactored "byte sources," improving performance reading image data from InputStreams.</li> + <li>More code cleanup, mostly removing debugging code and applying naming conventions.</li> + <li>Fixed two bugs around pngs: alpha channels weren't be written properly, and alpha channel was not being preserved when reading grayscale pngs.</li> + <li>Improved javadocs.</li> + </ul> +</p> + +<p> + Version 0.87 released October 6th, 2007. + <ul> + <li>Fixed a number of bugs.</li> + <li>Began adding javadocs, starting with the facade classes: Sanselan, and every class returned by its methods.</li> + <li>This is probably the last pre-apache release.</li> + </ul> +</p> + +<p> + Version 0.86 released September 17th, 2007. + <ul> + <li>Fixed bug with writing grayscale pngs.</li> + <li>Fixed bug with gamma correction when reading pngs.</li> + <li>Added image read param that allows control over BufferedImage creation.</li> + <li>Removed an erroneous javadoc.</li> + <li>Minor cleanup.</li> + </ul> +</p> + +<p> + Version 0.85 released September 5th, 2007. + <ul> + <li>Cleaned up Tiff image parser and writer.</li> + <li>Added compression parameter to tiff image writer.</li> + <li>Added an example that illustrates image writing, optional parameters, etc.</li> + </ul> +</p> + +<p> + Version 0.84 released September 3rd, 2007. + <ul> + <li>Fixed Tiff/Exif bug wherein rational number fields with a zero divisor prevented the metadata from being read, due to a "divide by zero" error.</li> + </ul> +</p> + + +<p> + Version 0.83 released August 30th, 2007. + <ul> + <li>Fixed Tiff/Exif bug wherein Private IFD Tags were not being properly read.</li> + <li>Added better metadata sample code.</li> + </ul> +</p> + +<p> + Version 0.82 released August 30th, 2007. + <ul> + <li>Complete refactor of the image metadata methods. See the new MetadataExample class for a simple example.</li> + <li>Converted all of the Sanselan class's methods to static.</li> + <li>Cleaned up some old code.</li> + </ul> +</p> + +<p> + Version 0.81 released August 17th, 2007. + <ul> + <li>Made a couple of methods of ImageInfo public (getColorType() and getColorTypeDescription()).</li> + </ul> +</p> + + +<p> + Version 0.80 released July 25th, 2007. + <ul> + <li>I've begun a overhaul of the codebase in anticipation of becoming an Apache Incubator project.</li> + <li>I've changed the package names (again) to be org.apache.sanselan.*.</li> + <li>I've removed the dependency on sharedlib.</li> + <li>I've removed a great deal of old cruft.</li> + <li>I've begun to apply a consistent naming convention to variables (lowerCamelCase) and constant names (ALL_CAPS).</li> + </ul> +</p> + +<p> + Version 0.79 released June 21th, 2007. + <ul> + <li>I've fixed that pernicious bug in LZW compression. I've switched the default TIFF compression scheme back to LZW.</li> + <li>TIFF uses an unusual variation of LZW. For details, see this article. http://www.fileformat.info/mirror/egff/ch09_04.htm</li> + <li>In this case, the bug was: trailing EndOfInformation codes are sometimes omitted. That is, if a EndOfInformation code is the last code of a block, it may not appear.</li> + </ul> +</p> + +<p> + Version 0.78 released June 20th, 2007. + <ul> + <li>LZW compression is buggy; this only effects writing TIFF. I've switched the default TIFF compression scheme to packbits which performs worse until this can be corrected.</li> + </ul> +</p> + + +<p> + Version 0.77 released June 16th, 2007. + <ul> + <li>I've open sourced the last dependency of this project, sharedlib.</li> + <li>I've also renamed almost all of the package names. Sorry about this; a simple global search and replace should be easy to do.</li> + </ul> +</p> + +<p> + Version 0.76 released September 16th, 2006. +</p> + +<p> + Version 0.75 released September 5th, 2006. +</p> + +<p> + First released September 22nd, 2004. +</p> + +</section> +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/history.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/history.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: commons/proper/sanselan/trunk/src/site/xdoc/index.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/index.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/index.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/index.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,81 @@ +<?xml version="1.0"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<document> + + <properties> + <title>Commons</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> + + <body> + +<section name="Sanselan: a Pure-Java Image Library"> + +<subsection name="Introduction"> + +<p> + This Pure-Java library reads and writes a variety of image formats, including fast parsing + of image info (size, color space, icc profile, etc.) and metadata. +</p> +<p> + This library is pure Java. It's slow, consequently, but perfectly portable. + It's easier to use than ImageIO/JAI/Toolkit (Sun/Java's image support), supports + more formats (and supports them more correctly). It also provides easy access to metadata. +</p> +<p> + Although not yet version 1.0, sanselan is working and is used by a number of projects in production. +</p> +<p> + This project is Open Source; free as in freedom and free as in beer. + It is available under the ASF (Apache) License. This is a non-viral Open Source license. +</p> +<p> + <ul> + <li><a href="whysanselan.html">Why Use Sanselan?</a></li> + <li><a href="gettingstarted.html">Getting Started</a></li> + </ul> +</p> + +</subsection> + +<subsection name="Downloads"> +<p> + Current release: 0.97, February 14th, 2009 + <ul> + <li><a href="download_sanselan.cgi">Download latest release</a></li> + </ul> +</p> + +<p> + API reference: + <ul> + <li><a href="api-release/index.html">Javadocs</a></li> + <ul> + <li>Start with the <a href="api-release/index.html?org/apache/sanselan/Sanselan.html">Sanselan class</a></li> + </ul> + </ul> +</p> + +</subsection> + +</section> + + +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/index.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/index.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: commons/proper/sanselan/trunk/src/site/xdoc/justification.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/justification.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/justification.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/justification.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,98 @@ +<?xml version="1.0"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<document> + <properties> + <title>Building</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> +<body> +<!-- ================================================== --> +<section name="Justification"> + +<p> + Why another image library? There are so many already. + see: <a href="http://fightingquaker.com/sanselan/#references">http://fightingquaker.com/sanselan/#references</a> +</p> + +<p> + This library is Pure Java. Consequently it's slow, but perfectly portable. +</p> + +<p> + It is designed to be very easy to use. See the Sample Usage section. +</p> + +<p> + This library supports some variations and encodings missed by all or most other libaries. +</p> + +<p> + Most other libraries offer little or incomplete support for ICC Profiles. + Sanselan can extract and (simply) parse embedded ICC Profiles. + Moreover, sanselan applies the icc profile by default, coverting read images to sRGB. + This means images are color-corrected by default. + see: <a href="http://en.wikipedia.org/wiki/International_Color_Consortium">http://en.wikipedia.org/wiki/International_Color_Consortium</a>, + <a href="http://en.wikipedia.org/wiki/SRGB">http://en.wikipedia.org/wiki/SRGB</a> +</p> + +<p> + Sanselan also lets you read in image info (ie. width, height or colorspace) and metadata without + "reading" the entire image. It presents image info and metadata in a format-neutral manner. + It also gives easy, structured access to format-specific info. +</p> + +<p> + This library was written with an eye to correctness and code clarity rather than efficiency. + Hopefully it is easy to use, easy to extend and can be used to explore images + image formats, + rather than just read images for display. +</p> + +<p> + This library is Free Software/Open Source. It is available under the + <a href="../license.html">Apache Software License</a>. +</p> + +<p> + Ultimately, other libraries didn't quite fill my requirements, though there are many good ones out there. + What's really called for is a free, portable, feature complete library that ISN'T pure Java + - ie. one that uses JNI, at least for JPEG, anyhow. The obvious solution would be a JNI wrapper + around libtiff, libjpeg, libpng, libgif/libungif, etc. imageloader uses this approach, but + is unfinished. + see: <a href="http://www.libtiff.org/">http://www.libtiff.org/</a>, + <a href="http://en.wikipedia.org/wiki/Libjpeg">http://en.wikipedia.org/wiki/Libjpeg</a>, + <a href="http://www.libpng.org/">http://www.libpng.org/</a>, + <a href="http://sourceforge.net/projects/libungif/">http://sourceforge.net/projects/libungif/</a> +</p> + +<p> + Sanselan also includes a number of useful functions such as guess an image's format by examining its "magic numbers" (header info). +</p> + +<p> + Sanselan aims to be transparent. There are no hidden buffers to dispose, no blocking calls, no native memory to free. +</p> + +<p> + The ColorConversions class offers methods to convert between the following color spaces: CIE-L*CH°, CIE-L*ab, CIE-L*uv, + CMY, CMYK, HSL, HSV, Hunter-Lab, RGB, XYZ and Yxy (algorithms courtesy of EasyRGB's). + see: <a href="http://www.easyrgb.com/">http://www.easyrgb.com/</a> +</p> + +</section> +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/justification.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/justification.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: commons/proper/sanselan/trunk/src/site/xdoc/references.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/references.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/references.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/references.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,55 @@ +<?xml version="1.0"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<document> + <properties> + <title>Building</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> +<body> +<!-- ================================================== --> +<section name="References"> + +<p> + + <ul> + <li>Marco Schmidt's list of Java image libaries: + <a href="http://www.geocities.com/marcoschmidt.geo/java-image-coding.html">http://www.geocities.com/marcoschmidt.geo/java-image-coding.html</a> + </li> + <li>Another list of Java image libaries + <a href="http://dmoz.org/Computers/Programming/Languages/Java/Class_Libraries/Graphics/Data_Formats/">http://dmoz.org/Computers/Programming/Languages/Java/Class_Libraries/Graphics/Data_Formats/</a> + </li> + <li>File format cloud. <a href="http://www.fileformat.info/format/cloud.htm">http://www.fileformat.info/format/cloud.htm</a></li> + <li>ImageInfo an excellent Java class to extract image properties. + <a href="http://www.geocities.com/marcoschmidt.geo/image-info.html">http://www.geocities.com/marcoschmidt.geo/image-info.html</a> + </li> + <li>EasyRGB's color conversion formulas. + <a href="http://www.easyrgb.com/">http://www.easyrgb.com/</a> + </li> + <li>AWare Systems TIFF Tag Reference (JPEG EXIF metadata is stored in TIFF directories). + <a href="http://www.awaresystems.be/imaging/tiff/tifftags.html">http://www.awaresystems.be/imaging/tiff/tifftags.html</a> + </li> + <li>Phil Harvey's exiftool and metadata reference + <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/index.html">http://www.sno.phy.queensu.ca/~phil/exiftool/index.html</a> + </li> + </ul> + +</p> + +</section> +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/references.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/references.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: commons/proper/sanselan/trunk/src/site/xdoc/sampleimages.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/sampleimages.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/sampleimages.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/sampleimages.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,71 @@ +<?xml version="1.0"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<document> + <properties> + <title>Building</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> +<body> +<!-- ================================================== --> +<section name="Test Image Suite and Sample Images"> + +<p> + <ul> + <li>The original test image suite that Sanselan was developed against cannot be released, since we don't own the rights to many of the more interesting examples.</li> + <li>We are in the process of collecting</li> + </ul> +</p> + +<subsection name="Sample Image Sources"> +<p> + + This list is hardly comprehensive, but it is a good starting point; I'll elaborate when I get the chance. +<a href=""></a> + <ul> + <li>Phil Harvey's large collection + <a href="http://owl.phy.queensu.ca/~phil/exiftool/sample_images.html">http://owl.phy.queensu.ca/~phil/exiftool/sample_images.html</a> + </li> + <li>Drew Noakes' collection of images with EXIF + <a href="http://www.drewnoakes.com/code/exif/exifImages/">http://www.drewnoakes.com/code/exif/exifImages/</a> + </li> + <li>RAWpository + <a href="http://www.glasslantern.com/RAWpository/">http://www.glasslantern.com/RAWpository/</a> + </li> + <li>exif.org's Sample Images + <a href="http://www.exif.org/samples.html">http://www.exif.org/samples.html</a> + </li> + <li>dpreview.com includes sample images with every one of their full reviews. + <a href="http://www.dpreview.com/">http://www.dpreview.com/</a> + </li> + <li>flickr let's you search by camera type, which is invaluable, although not all images are + "out of camera" originals (many have been edited or scaled). + <a href="http://www.flickr.com/">http://www.flickr.com/</a> + </li> + <li>PNG official test suite More png sample images available here. + <a href="ftp://ftp.simplesystems.org/pub/libpng/png/images/suite/">ftp://ftp.simplesystems.org/pub/libpng/png/images/suite/</a> + </li> + </ul> +</p> + +</subsection> + +</section> + + +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/sampleimages.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/sampleimages.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: commons/proper/sanselan/trunk/src/site/xdoc/sampleusage.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/sampleusage.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/sampleusage.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/sampleusage.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,125 @@ +<?xml version="1.0"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<document> + <properties> + <title>Building</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> +<body> +<!-- ================================================== --> +<section name="Example Code and Sample Usage"> + +<subsection name="Example Code"> +<p> + Can be found in the source distribution in org.apache.sanselan.sampleUsage package + <ul> + <li><a href="https://svn.apache.org/repos/asf/commons/proper/sanselan/trunk/src/test/java/org/apache/sanselan/sampleUsage/SampleUsage.java">SampleUsage.java</a>(includes the above code)</li> + <li><a href="https://svn.apache.org/repos/asf/commons/proper/sanselan/trunk/src/test/java/org/apache/sanselan/sampleUsage/MetadataExample.java">MetadataExample.java</a>(illustrates how to find JPEG EXIF metadata such as GPS, date and time photo taken, etc.)</li> + <li><a href="https://svn.apache.org/repos/asf/commons/proper/sanselan/trunk/src/test/java/org/apache/sanselan/sampleUsage/ImageWriteExample.java">ImageWriteExample.java</a>(illustrates how to write an image)</li> + <li><a href="https://svn.apache.org/repos/asf/commons/proper/sanselan/trunk/src/test/java/org/apache/sanselan/sampleUsage/ImageReadExample.java">ImageReadExample.java</a>(illustrates how to read an image)</li> + </ul> +</p> +</subsection> + +<subsection name="Sample Usage"> +<p> + +<source> +import java.awt.Dimension; +import java.awt.color.ICC_Profile; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Hashtable; +import java.util.Map; + +import org.apache.sanselan.*; + +// Code won't work unless these variables are properly initialized. +// Sanselan works equally well with File, byte array or InputStream inputs. +BufferedImage someImage = null; +byte someBytes[] = null; +File someFile = null; +InputStream someInputStream = null; +OutputStream someOutputStream = null; + +// The Sanselan class provides a simple interface to the library. + +// how to read an image: +byte imageBytes[] = someBytes; +BufferedImage image_1 = Sanselan.getBufferedImage(imageBytes); + +// methods of Sanselan usually accept files, byte arrays, or inputstreams as arguments. +BufferedImage image_2 = Sanselan.getBufferedImage(imageBytes); +File file = someFile; +BufferedImage image_3 = Sanselan.getBufferedImage(file); +InputStream is = someInputStream; +BufferedImage image_4 = Sanselan.getBufferedImage(is); + +// Write an image. +BufferedImage image = someImage; +File dst = someFile; +ImageFormat format = ImageFormat.IMAGE_FORMAT_PNG; +Map optional_params = new Hashtable(); +Sanselan.writeImage(image, dst, format, optional_params); + +OutputStream os = someOutputStream; +Sanselan.writeImage(image, os, format, optional_params); + +// get the image's embedded ICC Profile, if it has one. +byte icc_profile_bytes[] = Sanselan.getICCProfileBytes(imageBytes); + +ICC_Profile icc_profile = Sanselan.getICCProfile(imageBytes); + +// get the image's width and height. +Dimension d = Sanselan.getImageSize(imageBytes); + +// get all of the image's info (ie. bits per pixel, size, transparency, etc.) +ImageInfo image_info = Sanselan.getImageInfo(imageBytes); + +if (image_info.getColorType() == ImageInfo.COLOR_TYPE_GRAYSCALE) +System.out.println("Grayscale image."); +if (image_info.getHeight() > 1000) +System.out.println("Large image."); + +// try to guess the image's format. +ImageFormat image_format = Sanselan.guessFormat(imageBytes); +image_format.equals(ImageFormat.IMAGE_FORMAT_PNG); + +// get all metadata stored in EXIF format (ie. from JPEG or TIFF). +// org.w3c.dom.Node node = Sanselan.getMetadataObsolete(imageBytes); +IImageMetadata metdata = Sanselan.getMetadata(imageBytes); + +// print a dump of information about an image to stdout. +Sanselan.dumpImageFile(imageBytes); + +// get a summary of format errors. +FormatCompliance format_compliance = Sanselan +.getFormatCompliance(imageBytes); +</source> + +</p> + +</subsection> + +</section> + + +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/sampleusage.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/sampleusage.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: commons/proper/sanselan/trunk/src/site/xdoc/todo.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/todo.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/todo.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/todo.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,48 @@ +<?xml version="1.0"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<document> + <properties> + <title>Building</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> +<body> +<!-- ================================================== --> +<section name="To Do"> + +<p> + <ul> + <li>Add a structured way to write IPTC image metadata to JPEG files.</li> + <li>Refactor interface. Rename Sanselan methods and public class names. Formats should subclass imagemetadata class to include format-specific info ie. GIF's transparency index.</li> + <li>More control over writing.</li> + <li>Share test image suite with comments.</li> + <li>Improve Javadoc and write more FAQs / examples.</li> + <li>Allow user to disable autoconvesion to sRGB/Grayscale.</li> + <li>Add support for more than 8 bits per channel.</li> + <li>Reading all images from .gif files isn't working. see: getAllBufferedImages().</li> + <li>Add request/hint params to ImageFactory, per Endre's suggestion.</li> + <li>Add DNG metadata/image info read. Perhaps some RAW formats as well.</li> + <li>Publish image library (possibly) and links to other libraries.</li> + <li>Develop suite of unit tests that only depend on images in the public domain.</li> + <li>Add support for reading and writing XMP metadata.</li> + </ul> +</p> + +</section> + +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/todo.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/todo.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Added: commons/proper/sanselan/trunk/src/site/xdoc/whysanselan.xml URL: http://svn.apache.org/viewvc/commons/proper/sanselan/trunk/src/site/xdoc/whysanselan.xml?rev=793168&view=auto ============================================================================== --- commons/proper/sanselan/trunk/src/site/xdoc/whysanselan.xml (added) +++ commons/proper/sanselan/trunk/src/site/xdoc/whysanselan.xml Sat Jul 11 02:59:46 2009 @@ -0,0 +1,60 @@ +<?xml version="1.0"?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<document> + <properties> + <title>Building</title> + <author email="d...@commons.apache.org">Commons Documentation Team</author> + </properties> +<body> +<!-- ================================================== --> +<section name="Why use Sanselan?"> + +<p> + <ul> + <li>This library is Free Software/Open Source. It is available under the <a href="license.html">Apache Software License</a>.</li> + <li>Sanselan is pure-Java. It will run on any jvm, on any platform without modification. It has no dependencies. Sanselan only requires Java 1.4 or later.</li> + <li>Sanselan is easy to use. It has a simple, clean interface. Most operations are a single Sanselan method call. See our Sample Code for examples.</li> + <li>The core functionality is reading and writing a variety of image formats. See the list of Supported Formats.</li> + <li>Sanselan supports a number of format variations and uncommon features not supported by other image libraries.</li> + <li>Sanselan does more than read and write images. Reading image info (image size, colorspace, bit depth, etc.) and metadata is easy and does not require reading the entire image.</li> + <li>Sanselan supports reading and writing a variety of metadata in a structured way, including EXIF metadata.</li> + <li>Sanselan provides a consistent api across a variety of image formats.</li> + <li>Sanselan is network-aware. Sanselan will only read the data it needs. Reading most image info and metadata only requires reading a header.</li> + <li>Sanselan was written with an eye to correctness and code clarity rather than efficiency.</li> + <li>Sanselan can extract and (simply) parse embedded ICC Profiles. Moreover, Sanselan applies the icc profile by default, coverting read images to sRGB. + This means images are color-corrected by default. see: + <a href="http://en.wikipedia.org/wiki/International_Color_Consortium">http://en.wikipedia.org/wiki/International_Color_Consortium</a>, + <a href="http://en.wikipedia.org/wiki/SRGB">http://en.wikipedia.org/wiki/SRGB</a> + </li> + <li>Sanselan is actively maintained.</li> + </ul> +</p> + + + + + + + + + + +</section> + +</body> +</document> Propchange: commons/proper/sanselan/trunk/src/site/xdoc/whysanselan.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: commons/proper/sanselan/trunk/src/site/xdoc/whysanselan.xml ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL