July 21, 2004

Open source Photoshop alternatives

Author: Remy Porter

While virtually all computer graphics professionals use Adobe Photoshop to do their artistic work, Photoshop is a pricey and proprietary application. If you're looking to do graphics design on a budget, or perhaps want a software package that is less resource-intensive than Photoshop, check out open source alternatives -- the GIMP, SodiPodi, and Inkscape.


For working with raster images, photographs, and the like, the open source king is the GNU Image Manipulation Program, better known as the GIMP. Most Linux distributions come with the GIMP in the standard install. The latest version is GIMP 2.0.

The first surprise awaiting Photoshop-savvy users is the GIMP's unfamiliar interface. The GIMP is a Single Document Interface program, which essentially means that each image gets a separate window on your desktop, and are not grouped together in a single large window as with Photoshop's Multiple Document Interface. Each dialog you interact with is a separate window, so for a single image, you'll be working with several windows -- the toolbox, the layers window, and the tool options, for example. These windows serve the same role as palettes in Photoshop, and as of version 2.0, each of these windows can have tabs added or removed from them, making them nearly indistinguishable from Photoshop's palettes.

There are some nice surprises lurking in the GIMP's user interface. While there is a menu bar for each image, the same menu can be accessed anywhere on the image by right-clicking. If you find that you use the same menu frequently, there's a small bar at the top of each menu that allows you to tear that menu off and have it float as a window beside your image. I use this to easily access the Layer->Colors menu. If you don't like the GIMP's keyboard shortcuts, you can redefine almost all of them by holding your mouse over the menu options and pressing a new combination.

Now for some bad news. While the GIMP, like a parfait, has layers, compared to Photoshop, the GIMP's layer interface seems more like an onion. You can perform basic operations -- merging and flattening, alpha layers, and layer blending. But the GIMP does not offer layer groups or effects layers. The GIMP's layer tools are powerful, but they lack the ease of use that you have in Photoshop.

On the flip side, the area where the GIMP shines the most in is its filters. The GIMP has analogs to most of the filters you have in Photoshop, and it has many, many more. In addition to compiled, binary filters, the GIMP also supports Script-Fu, a simple LISP-based scripting language for automating major tasks. It can also use filters written in Perl.

What sort of filters are we looking at here? All the necessary basics, including more kinds of blur than you can shake a stick at; some very interesting color manipulations, including the mandatory Gradient Map; and the ever-funky Alien Map, which does strange things to your images. There's a wealth of distorting tools, with things like Whirl-and-Pinch (or Punch); I-Warp, the interactive distorting tool that's like Photoshop's Gooify; Sharpen; Unsharp mask; and Find Edges -- all of those important things. You also have many interesting rendering filters that draw plasmas and cloudscapes. Script-Fu adds a variety of shadowing tools and utilities for sepia-toning and coffee staining, and can automatically generate logos and Web site buttons.

Once you've whipped up a stylish graphic, you'll want to save it, and the GIMP offers you the full compliment of file types. From JPEG to PNG to the GIMP's native format XCF (which is equivalent of a Photoshop PSD file), you can save to nearly any format. You can load images from a few formats that you can't save to, like Photoshop PSDs.

Vectoring in on Sodipodi and Inkscape

The GIMP is great for raster graphics, but what about vector editing? That's a big part about what you have to do in Photoshop, right? The GIMP has one filter, called G-Fig, that gives you some limited vector editing capacity, but if you want to do very stylish graphics, you need a vector graphics package. In this area, the open source user turns to Sodipodi or Inkscape.

Sodipodi and Inkscape have very similar features -- which isn't surprising, because they use the same codebase. Inkscape is a fork of the base Sodipodi, which uses a much more Photoshop-like user interface and has better support for different varieties of path geometry. For the most part, everything else stays the same.

Sodipodi's user interface is very similar to the GIMP's, with multiple windows and no one container window for all of them. Sodipodi's tool window allows you to hide tools you aren't using, or snap off a palette for the tools you use the most. Sodipodi also relies on a right-click menu to get at many important features, but here it serves to make navigating through dialogs cumbersome. Inkscape's user interface does a much better job at helping you through dialogs.

These packages offer you just the basic drawing primitives -- ellipse, rectangle, polygon, spiral, and the path. However, there is very little you can't make with those, so it's certainly a good base, and the most important set of tools to have. As one would expect, you can control the roundness of a rectangle, giving it soft corners, as well as the angle on your polygon, allowing you to make stars as easily as convex shapes.

You're bound to be disappointed in these packages' color effects, however. You can fill with a solid color, a linear gradient, and a circular gradient. Each gradient can be modified to repeat or reflect, but that is all you have to work with. Still, these are the most commonly used fill modes, so you won't be losing too much.

There are also no effects; unlike Photoshop, you cannot tell a shape to drop a shadow or glow. And since your gradient types are as limited as they are, it's very difficult to make good fuzzy edges, which would allow you to imitate such effects.

On path geometry, Sodipodi is sure to let you down. Sodipodi lets you group and combine, but only Inkscape allows you to use things like Difference, Intersect, and Exclusion to combine your paths. Of course, both programs have node manipulating tools, so any path you create can be distorted into any shape you can conceive as a two-dimensional vector.

The output from either program is a form of Scalable Vector Graphcics (SVG), the XML-based standard from the W3C. Additionally, the programs can save and load PostScript. And, if you want to take your vector design and incorporate it into the GIMP, you can export any vector into a raster PNG file.

Despite the failings...

These packages are not Photoshop, and while they are all powerful in their own right, they do not match the powerhouse that is Photoshop. Even the GIMP, the most mature of these packages, has a user interface that can be bewildering at times. While I've always considered it easier to work with than Photoshop's, most people I've spoken with have disagreed. The weakness in the GIMP's layering is probably the most serious deficiency; but the fact that the GIMP does not support vector layers means that there is no real integration between our vector designs and our raster images, making many graphics design tasks far more work than they really need to be.

On the upside, the GIMP, Sodipodi, and Inkscape are offered at an unbeatable price -- free. And while the quality may not be on par with Photoshop, they are still fantastic applications. Updates and new features appear regularly, and there's a very active community developing plug-ins for the GIMP.

Despite the missing features, these three programs are powerful utilities, and offer an excellent graphics solution for open source advocates and artists on a budget.

Remy Porter is a developer, designer, artist, musician, and
freelancer writer.

Click Here!