PhotoClip

PhotoClip is a simple image viewer and editor mostly designed for digital camera pictures. The plan is to make a program with elegant and intuitive interface which at the same time will be powerful enough o be useful. PhotoClip is based on GNUStep.

That elegance dictates a small set of features. Right now everything supports just one activity: image recomposition, i.e. selecting, cropping and scaling of the image fragments.

The latest release is 0.2.5.

Released under the terms of GNU LGPL (Library General Public License).

Changes in this release

Download

PhotoClip-0.2.5.tar.gz

Installation

  1. You need to have GNUstep installed on your machine. Consult GNUstep documentation how to install GNUstep. I normally build it from sources with the help of GNUstep build guide.

    Only one backend - libart - is fully supported now. This backend is now built by default, but you still might want to have finer control over gnustep-back congifuration. For instance, I usually do

    ./configure --enable-server=x11 --enable-graphics=art --with-name=art
    
    and then at the very end of GNUstep installation explicitly set the backend name with
    defaults write NSGlobalDomain GSBackend libgnustep-art
    
  2. If you want to use the lossless JPEG saving feature, you need the jpegtran program that can do crop. Check it with command
          jpegtran -crop 8x8+0+0 input-file.jpg > output-file.jpg
    
    Most modern Unix distributions will have crop-capable jpegtran. Nevertheless, this feature is not included into official release of JPEG package and might not be on your machine. In that case you would need to recompile libjpeg youself:
    1. Get libjpeg-6b sources, e.g. from http://www.ijg.org/files/jpegsrc.v6b.tar.gz and unpack it.
    2. Get croppatch.tar.gz from http://sylvana.net/jpegcrop/croppatch.tar.gz and unpack it into the libjpeg directory. The croppatch contains patched files that will replace originals in that directory.
    3. Compile and install the package.
  3. Current version of PhotoClip does not use configure. For that matter you need to modify the file LosslessJEPG.h manually. Open this file with an editor and change the line

       #define JPEGTRAN "/usr/bin/jpegtran"
       
    to reflect the full path to jpegtran program in your system.
  4. After that you are ready to regular installation process. Compile with

       make
       
  5. Become root and install with
       make install
       

Features

Lossless JPEG transformations

JPEG is a lossy compression format, which means that certain amount of information is discarded during compression process. This gives very high compression ratio, but after decompression some finer details are lost.

If the user restores the image, modifies it (rotate to 90 degrees, for instance) and then compresses into JPEG again, more details will be lost just because the JPEG compression procedure has been applied second time.

Subsequent modifications with decompression/recompression will degrade image quality even more.

Fortunalely, for several kinds of operations it is possible to rearrange the JPEG data in the compressed form without decompression and subsequent recompression. Thus, this manipulations change the image without any further degradation in image quality. They are called lossless JPEG transformations.

These operations include rotation to 90 degrees clockwise and counterclockwise, cropping rectangular areas and reflections. In most cases the edges of the manipulated region should coinside with JPEG block boundaries (blocks are usually 8x8 or 16x16 pixels).

If the cropping, 90-degrees rotations and refections are all what user wants, lossless JPEG transform is the best way to do these operations.

For more details see http://sylvana.net/jpegcrop/jpegtran

Bugs

There are many obviously missed features. Here are the most apparent ones.

Certain features are also missed in the current GNUstep implementation: I believe there are more, please report bugs to tima@vaisburd.net

Acknowledgements

The ImageViewer by Philippe C.D. Robert and PRICE by Riccardo Mottola helped me to get started. I got help from may people on discuss-gnustep mailing list.