=========================================================================
Welcome to Apache Commons Imaging  <http://commons.apache.org/imaging/>
=========================================================================

License (see also LICENSE)
==============================

Collective work: Copyright 2007-2012 The Apache Software Foundation.

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.


Getting Started
===============

Mailing Lists
-------------

To get involved with the Apache Commons Imaging project, start by
having a look at our website (link at top of page) and join our mailing
lists by sending an empty message to the Apache Commons mailing lists

   user-subscribe :at: commons.apache.org
and
    dev-subscribe :at: commons.apache.org

and the dev mailing list archives can be found at

   http://mail-archives.apache.org/mod_mbox/commons-dev/

Please prefix the subject line of any messages with [imaging].

Downloading
-----------

The Commons Imaging source code is available via Subversion at

   https://svn.apache.org/repos/asf/commons/proper/imaging/trunk

and anonymous access is available at

   http://svn.apache.org/repos/asf/commons/proper/imaging/trunk

or with ViewVC at

   http://svn.apache.org/viewvc/commons/proper/imaging/trunk/

To checkout the main Imaging source tree, run

   svn checkout http://svn.apache.org/repos/asf/commons/proper/imaging/trunk/imaging

Once you have a copy of the source code tree, you can use Apache Maven

   http://maven.apache.org/

to build the project. You should use Maven 2 to build Imaging.
The minimal command to build, test, and package all the main Imaging
components is:

   mvn install

For more instructions, please see the documentation at:

   http://commons.apache.org/building.html

Credits
=======

See http://commons.apache.org/imaging/team-list.html for the list of 
Imaging committers and main contributors.
