Image Manipulation with The GIMP

Simon Budig


The GIMP is the most successful free image manipulation software. Sometimes, the vast amount of features can drive new users mad. This text aims to lower the entry hurdle and gives an introduction to the history and the basic concepts of The GIMP.

Table of Contents
1. What is The GIMP?
1.1. The past...
1.2. The present...
1.3. The future...
2. Basic concepts
2.1. Selections
2.1.1. Basic selection tools
2.1.2. Advanced selection tools
2.1.3. Selections vs. masks
2.2. Layers
2.2.1. Basic operations
2.2.2. Layer masks
3. Examples
3.1. Release Objects from their background
3.2. Carnivore attack
3.3. Quicker with selections?
3.4. Enlightening his holiness...
3.5. Top-Secret: new species of flying fish discovered!
4. Epilogue...

1. What is The GIMP?

The GIMP (Gnu Image Manipulation Program) is free software, available under the GNU GPL. It meets the demands of professional artists in large areas. Especially when it comes to screen design, The GIMP can replace really expensive programs.

1.1. The past...

Spencer Kimball and Peter Mattis, The GIMP's original authors.

It was in the spring of 1995. To quote Spencer Kimball and Peter Mattis:

The GIMP arose from the ashes of a hideously crafted cs164 (compilers) class project. The setting: early morning. We were both weary from lack of sleep and the terrible strain of programming a compiler in LISP. The limits of our patience had long been exceeded, and yet still the dam held.

And then it happened. Common LISP messily dumped core when it could not allocate the 17 MB it needed to generate a parser for a simple grammar using "jyack". An unbelieving moment passed, there was one shared look of disgust, and then our project was vapor. We had to write something...ANYTHING...useful. Something in C. Something that did not rely on nested lists to represent a bitmap. Thus, the GIMP was born.

Like the phoenix, glorious, new life sprung out of the burnt remnants of LISP and jyacc. Ideas went flying, decisions were made, the GIMP began to take form.

In February 1996 the first public version of The GIMP appeared on stage and remained the official stable version for a long time. But the dependency on Motif – a proprietary widget set – became a big burdon for the further development. Since the development kit for Motif was not usually bundled with Linux, potential developers had to invest lots of money to be able to participate in the development.

Thus Peter Mattis in the beginning of 1996 started the development of his own toolkit. The Gimp Toolkit (GTK) became very popular and it became its own project – separated from The GIMP. It now serves as the base for a lot of programs, most notably the GNOME desktop.

After The GIMP was ported to GTK in early summer of 1996 the development quickly accelerated. These ancient versions already pretty closely resemble the current look and feel. Important new features were added and in October of 1997 the first feature freeze led to the appearance of version 1.0 on June 5, 1998. The relatively long feature freeze has a positive impact on the code quality: Version 1.0 only had four bugfix releases until The GIMP 1.2 appeared on Christmas 2000. The GIMP 1.2 was in feature freeze since September 1999 and had three bugfix releases up to now.

1.2. The present...

Spencer and Pete left The GIMP's developer community. After finishing their studies, there was no time left to invest into The GIMP. Fortunately new maintainers filled the gap and the development never came to a stop.

As usual the development is maintained via the mailing list and CVS. IRC is also an important way to communicate. Since it is pretty clear who is responsible for what, conflicts are rare and mostly happen to the Changelog. Bugzilla helps us tracking bugs.

1.3. The future...

Currently the development in the 1.3.x-series gives attention to the general architecture of The GIMP. An important goal is the separation of the image manipulation core and the user interface. This might make it possible to use The GIMP as a backend for batch image processing or even create different user interfaces for specialized tasks. However, a big limitation will not disappear in 1.3.x: different color spaces (CMYK, ...) need a big overhaul in the internal data structures and will be tackled in the development for the 2.0.x series.