When it comes to pictures, Linux has a lot more to offer than just the GIMP. Find out what cool tools are available.
By now we’re all familiar with the GIMP, Linux’s first real killer app for the desktop. But aside from this one high-profile success story, Linux graphics tools are still pretty much in their infancy. There is a lot of very interesting software out there, however. We are starting to see ports of high-end commercial products such as Side Effects’ Houdini, a 3D-modeling tool used by the big-name special-effects houses in Hollywood. Tools like this are driving graphic-card hardware vendors to work on drivers for Linux. And as the 3D-card vendors go, so to go the rest of the graphics-market vendors.
The world of Linux graphics is moving fast, and the desktop user is right in the middle of it all. Let’s take a look, then, at what artists can do with Linux today, and what they should be able to do in the near future with 2D Linux tools, which are more plentiful and easier to use than their 3D counterparts.
Getting the Image into the Machine
Digital artists tend to start their work in one of two ways: by drawing or painting an initial version on paper, or by using photography. In either case, the initial image has to get into the computer by scanning. Linux uses a generic interface called SANE (as in Scanner Access Now Easy). SANE also has limited support for a few other devices like Kodak digital cameras and the Connectix QuickCam. SANE is a package of tools that includes back-end device drivers and front-end user tools, both command-line and graphically oriented versions. Most artists will work with xscanimage, the graphical interface to SANE that works well as a GIMP plug-in. However, you can also set up scanners to work with SANE as a network-accessible device as well as access those devices, either locally or across the network, using command-line tools.
|SANE: Scanning the open source way.|
The xscanimage front end to SANE will produce files in an appropriate PNM format (PBM for black-and- white images, PGM for grayscale images, and PPM for color images), unless it’s used as a GIMP plug-in. In that case it just passes the image to GIMP and lets the GIMP handle the image format.
Beyond SANE, you can also try XVscan, a version of the well-known xv image viewer that has scanner support added. It supports HP SCSI ScanJet scanners and a couple of Microtek scanners. XVscan is from tummy. com, runs for about $50, and includes all source, if you’re into that sort of thing.
Some of the Supported Scanners for SANE and XVScan
AGFA SnapScan 300, 310 and 600
Tamarack Artiscan 1200C
Mustek MFS 1200SP, MFS 12000CX
Microtek Scanmaker models E2, E6, E3, II, III
Microtek Scanmaker 35t+ (film scanner)
Kodak DC210, DC25 digital cameras
Nikon LS-20, LS-1000, AX-210
HP ScanJet 3p, 4p, 6200, 6250
UMAX Astra 600S, 610S, 1200S, 1220S
Linutype Hell Jade, Jade2
* More detailed information is available from the SANE Backends page: http://www.mostang.com/sane/sane-backends.html. The SANE Web site is at: http://www.mostang.com/sane/
* XVScan, available from (http://www.tummy.com/xvscan/) supports, as an extension to XV, the following scanners:
HP SCSI ScanJet Scanners: PhotoSmart, 6100c or 6100cse, 6200c, 6200Cse, 6200Cxi, 6250c, 6250Cse, 6250Cxi, 5p or 5pse, 4p, 4c, 3c, IIp, IIc, IIcx,
Microtek scanners: E3 and E6
But scanning is just one way to get an image into the computer. Images from digital cameras can be downloaded directly into a Linux system, just as they can on other platforms, although there isn’t a single driver or front end for these as there is with SANE.
A number of packages are available that support a wide range of cameras. Most of these are command-line-oriented tools, but two packages offer nice graphical front ends. Camediaplay, Photopc, and Qvplay are packages that use command-line interfaces. Camediaplay doesn’t appear to have much online help at its Web site and is limited to a command-line interface. Photopc and Qvplay are also command-line-oriented, but Tk-based graphical interfaces are available as separate packages for each. Photopc was written specifically for the Epson PhotoPC 500 but also supports the Agfa ePhoto, Olympus Sanyo VPC-G200, and Nikon Coolpix cameras. Qvplay also provides support for various members of the Casio QV family of digital cameras.
|JCAM: Jcam downloads images from Kodak and Chinon cameras.|
JCAM is a cross-platform Java-based interface to a wide variety of cameras. It supports many of the same cameras supported by Photopc and Qvplay. It appears to be a commercial – or at least, shareware – package, but the secure download is disabled as of the time of this writing.
gPhoto is the last option in this category. A free product, it has a graphical interface based on the popular GTK (GIMP ToolKit) windowing library that was originally developed for use by the GIMP project. It also appears to have support for more cameras than any of the other products. For this reason alone you might want to consider starting your search for digital-camera support with gPhoto.
Digital Camera Applications
Camediaplay (Download: http://www.itojun.org/itojun.html)
Cameras: Sanyo DSC-X300, VPC-G200/G200EX
Interface: Command-line tool that reads from serial port connected to camera.
Photopc (Download: http://www.average.org/digicam/)
Cameras: Epson PhotoPC 550 and related cameras
Interface: Command-line tools and driver for downloading via serial port. Photopc has a Tcl/Tk front end available from http://www.mediacity.com/~pwhite/Phototk/ phototk.html
Documentation: End user information, with a list of supported cameras, can be found at http://www.lightner.net/lightner/ bruce/photopc/ppc_use.html
Qvplay (Download: http://www.asahi-net.or.jp/~XG2K-HYS/index-e.html)
Cameras: Casio QV10, QV-10A, QV-11, QV-30, QV-70, QV-100, QV-200, QV-300,QV-700, QV-770
Interface: Command-line tool; Tk-based GUI can be found at http://www.bekkoame.or.jp/~tormato/index.htm
JCAM (Download: http://www.jcam.com)
Cameras: Kodak DC-20, DC-25, DC-200/210, Chinon ES-1000 (same hardware, protocol and image format as Kodak DC20), many others
Interface: Java application
gPhoto (Download: http://www.gphoto.org)
Cameras: Largest list of supported cameras, by far.
Interface: GTK-based front end and camera libraries all rolled into one.
More information on digital cameras can be found in the Hardware-HOWTO: http://www.linuxdoc.org/HOWTO/Hardware-HOWTO.html
Of course, the simplest way to get an image into the computer is by reading it from a file. Static images – single frames, not movies – come in many formats. The formats you’re likely to work with most as an artist are TIFF and PhotoCD. TIFF you’ll see a lot because it’s a format in which all original color information is saved, even if the file is compressed, and it’s well-supported on multiple platforms using many different image-manipulation programs. On Linux, tools like the GIMP, XV, ImageMagick, NetPBM, and most others support TIFF thanks to SGI guru Sam Leffler’s TIFF library. You’ll find you’ll be working with TIFF files a lot if you need to take your images to a printer.
PhotoCD is a format generally encountered when reading stock images from a CD. It is widely used in the graphic-arts world because it permits multiple resolutions of a single image to be saved. This lets you use low-resolution thumbnails to scan quickly for an image of interest while providing the very high-resolution versions necessary for large-scale print production. PhotoCD is not widely supported on Linux yet, but you can work with PhotoCD disks using programs like GIMP and ImageMagick as well as the commercial program CompuPic.
There are a slew of image viewers available for Linux. Image file formats are fairly well-defined, so writing viewers is just a matter of taking the time to write the libraries to handle reading them. On Linux, this happened very early on. The result is a mass of image viewers: xv, Electric Eyes, KuickShow, PhotoShow, QtVu, Quick Image Viewer. The list is long. With so many options, there’s little need to download a viewer. Alternatively, a few of these, xv in particular, allow some image editing. So you may want to consider whether you need to simply view an image, or need to work on it as well.
Video For Linux
Video-capture boards, sometimes referred to as frame grabbers, are another option for getting images into your system. Most of these devices require kernel 2.2 or later, which means you’ll need a distribution like Red Hat 6.0 or later or SuSE 6.0 or later. The reason for this requirement: Video4Linux. This is a project aimed at making graphics-related devices (something other than ordinary graphics-display adapters) easier to support. For now, however, there aren’t many Video4Linux devices for the end user to play with, unless you understand how to compile and install updates to the kernel (something that’s beyond the scope of this article).
Video4Linux’s video-capture support comes from a set of standard X Windows apps like xawtv and tvset, with collections of command-line tools for managing the devices. There are a number of nice graphical front ends to this, and from an end-user perspective this would probably be the place to start if you want to look into video-capture options, especially if you haven’t already bought any hardware. According to Linux developer Alan Cox, with Video4Linux the same front ends should work with all video-capture cards.
The project with the most driver support is BTTV, a driver for video adapters that use the BrookTree BT848/ 849 or BT878/879 chipsets.
BTTV requires kernel 2.0.36 at least, which means users of Red Hat 5.2 could use this driver. But you have to install it manually – it’s not part of the 5.2 distribution. Additionally, the driver is designed specifically for 2.2.x kernels to work with Video4Linux. Since the 2.2.x kernels have been in most of the recent distributions, if you just got your Linux system there’s a good chance this driver is already included. If the driver (likely to be a kernel module) is loaded, you should see devices like /dev/ video, /dev/radio, /dev/vtx, and /dev/ vbi in the /dev/ directory.
Along with the video cards supported by the BTTV driver, a few other devices have various levels of support. The Iomega Buz has a driver and command-line tools available for download. The support doesn’t appear to be in any current distributions, and the driver requires kernel 2.2 or later. Since the driver conforms to the Video4Linux specification, it works well with XawTV and similar front-end tools. The online documentation for using an Iomega Buz is quite good, better than most projects that are so early on in their lifetimes. But adding support for this device is still a task for the experienced user.
|The Tube on Your Desktop: KDE’s kWinTV viewer.|
One other device of interest is an MJPEG card that is being designed from the ground up to work with Linux. The product is from Linux Media Labs and includes open-sourced drivers and tools. The drivers support the 2.0 and 2.2 kernels, so this card should work on most distributions less than two years old. Interestingly enough, their Web site says they’re working on the LML1394 card, which will provide FireWire support for Linux.
Video Hardware and Application Support
Cameras: Largest list of supported cameras, by far.
Interface: GTK-based front end and camera libraries rolled into one.
BTTV: Driver for frame-grabber cards with the Brooktree (now Conexant) Bt848/849 or Bt878/879
Web Site: http://www.thp.Uni-Koeln.DE/~rjkm/linux/bttv.html
Hardware: Supports miroVIDEO PCTV, Matrix Vision MV-Delta, Hauppage Win/TV pci, STB TV PCI, Diamond DTV2000, and many others.
xawtv: graphical front end for TV viewing and frame grabbing. http://www.inberlin.de/User/kraxel/xawtv.html
kWinTV: QT-based front end for TV viewing that started life as xawtv and was ported into the KDE environment. http://www.mathematik.uni-kl.de/~wenk/kwintv/index.html
bttvgrab:: video capture program. http://moes.pmnet.uni-oldenburg.de/bttvgrab/
Iomega Buz: http://www.lysator.liu.se/~gz/buz/
There is good documentation for this, but requires a 2.2 kernel (RH 6.x, for example). It comes with command-line tools but can also work witH XawTV and applications that use Video4Linux.
Linux Media Labs: http://linuxmedialabs.com
Builds the LML33, an MJPEG PCI card designed specifically for Linux that performs video capture, compression, and playback.
Nathan Laredo’s Linux MPEG2 project: http://mpeg.openprojects.net
Supports the high-end Stradis MPEG-2 4:2:2 Decoder card – http://www.stradis.com/
FireWire for Linux*: http://eclipt.uni-klu.ac.at/ieee1394/
USB for Linux*: http://www.dynamine.net/linux-usb/HOWTO/
* Neither FireWire nor USB quite has consumer-ready support, although USB is probably getting close.
Encrypted DVD, the type of DVDs on which most movies are distributed, is not currently supported on Linux, at least not officially. There was a DVD project that recently cracked the encryption of DVDs, but apparently the legal ramifications of this were enough to cause the Web site for the project to go down. Right now, its future seems to be a matter for the courts to decide.
A driver for MPEG2 video, using both software and hardware decoding, is being written by Nathan Laredo. The project supports the Stradis Professional MPEG-2 4:2:2 decoder, which is about a $1,500 card – not a consumer-level device. USB is supported only in kernels 2.2.7, which may or may not be available in recent prepackaged distributions. Information on getting this working can be found in the Linux USB Howto at http://www.dynamine.net/ linux-usb/HOWTO/. Similarly, FireWire support is being developed but is not quite an end-user product at this time.
Touching It Up – Vector (Sketch) and Raster (GIMP) Tools
When you get right down to it, there aren’t that many graphics tools for Linux that have graphical interfaces and are designed for nontechnical users. Although the choices from this perspective are limited, you’re really not going to suffer that much. The reason: GIMP.
GIMP is a Photoshop-style tool that can do just about anything its Adobe cousin can, falling short only with respect to managing colors in the way Photoshop handles Pantone colors. Effects, layers, animation, even paths, are available in the GIMP (or will be when 1.2 is released sometime in early 2000). It’s even being used in Hollywood. A number of special-effects houses are working on updates and extensions to the GIMP that specifically address issues of film production. This is no toy. It’s a very productive, very professional tool.
GIMP supports scanners through the SANE interface and in the 1.2 version will have extensive support for graphics tablets. The latter requires proper configuration in your X server, but it’s not that difficult to do if you can find someone to walk you through it once.
GIMP shines for pixel-based editing, but when it comes to vector editing tools on Linux… well that’s another story. A vector tool stores information about lines and regions. This differs from raster-based tools like the GIMP, which store information about each individual pixel. In a nutshell, vector tools are great for drawings but bad for photos. Raster tools are great for photos and bad for drawings. Vector tools are used for creating clip art, Web art (including logos), and hand drawings. Hand drawings are often scanned in, vectorized, and modified in the computer to create black-and-white templates. These are then colorized using raster tools like the GIMP. Many print and televised cartoons use this method. In essence, GIMP is terrific for touching up images but lacks the controls for creating the original outlines of an image.
The closest Linux comes to a vector tool is Sketch, a tool modeled on Adobe Illustrator that is very early in development. The 0.6.2 version has plenty of features, but its interface is a bit clunky. The latest developers’ version is being ported to GTK – the same interface used by GIMP – but that work is in its early stages. The latest developers’ releases (0.7.x) are actually steps back in functionality from the stable 0.6.2 release. Once the GTK port is done, you can expect to see more features. Sketch has promise, and you can do productive work with it, but it’s not in a class that professional artists would expect.
There are no commercial end-user pixel- or vector-based tools ported to Linux yet. Corel Draw is expected around summer of 2000. Corel says that Draw will run as a WINE application, not a true port to Linux. The only other tool that comes close to the class of product that GIMP is would be xv. Still, xv is more an image-processing tool. It’s not exactly an artist’s tool, though artists will make use of its many features. It’s much easier to use xv to scan thumbnails than to open the GIMP to do so.
Video Playback and Editing
Animation formats, like their static brethren, come in many flavors. Xanim is probably the most widely used animation viewer for Linux. It is to video files what xv is to static images – each is the Swiss Army Knife for its respective format. Although many tools are available for animation playback, few tools can capture individual frames. Video capture from animation files like MPEG or AVI are usually handled in what are known as Non-Linear Video Editors, a fancy term meaning you can edit a video by randomly jumping around to different frames. There aren’t many of these types of tools for Linux yet. A couple of early entries here are MainActor, Broadcast 2000, Crow, and Tattoo.
Xanim doesn’t allow editing. In its standard form, it’s just a playback tool. But there is an export version that can be used to convert from any of the supported input formats to AVI (Audio Video Interleaved). A couple of other tools, ras_track and roto, deserve special recognition – they’ve been used by their developers in the production of a few feature-length movies: Titanic and My Favorite Martian for example. These are fairly powerful tools and are free for download through August of 2000. Ras_ track is used for 3D camera tracking. Roto is a rotoscoping tool.
You’ve managed to get the images into your system, you have done some editing, and you can view your works in both static and animated formats. But you still need to manage the images. Content management can mean tracking files, preparing them for postprocessing, applying postprocessing, or all of the above. This can be done interactively or by using command-line tools.
Starting with command-line tools, there are a couple of options. ImageMagick is primarily command-line-oriented, although it has some tools with graphical interfaces included. NetPBM is a huge collection of command-line tools designed to be strung together in pipes to process images. Both ImageMagick and NetPBM offer some fairly sophisticated processing options, and both are ideal for batch processing of large numbers of files. NetPBM has been around for quite some time, with few updates, and is included in all Linux distributions. ImageMagick is a little newer but still undergoing constant improvement. However, it may not be included with your Linux distribution.
Both xv and GIMP allow you to manage images through the use of thumbnail previews. xv provides a feature called the Visual Schnauzer, which is a separate window you open from the main window. You can open multiple versions of the Schnauzer, which allows you to drag and drop the thumbnails (and move the images) between them. GIMP provides an image previewer called Guash. With this plug-in you can view thumbnails of images (in the same format that xv uses for its thumbnails) and drag and drop them between multiple Guash windows.
|Commercial Option: Phodex’s CompuPic.|
A more sophisticated content manager is a commercial package from Photodex called CompuPic. By far the most user-oriented tool in this category, CompuPic includes features like offline management of files, image editing (such as red-eye reduction), and slide shows. Its image-editing features are not as extensive or generalized as those of GIMP, but its file management far exceeds that of Guash.
CompuPic is a commercial program, but at $40 for commercial users, it will probably not break the bank.
Most of the tools I’ve discussed are open source products, but a few commercial products are heading to Linux as well. CompuPic and MainActor are commercial products that are free for private use. And it appears future DVD support may come only in commercial software, unless encryption issues can be solved.
You might not find these tools on the shelves of the local software retailer, but Linux does have quite a few options available to the graphic artist. The current state of most of these tools requires that you understand a bit about compiling software or at least have the latest distributions from Red Hat, SuSE, or the other big Linux vendors. But the growth of the graphics industry, coupled with the rising star of Linux, will see graphics tools of all types make their way to Linux.
Michael Hammel is the author of Artists’ Guide to the Gimp. Reach him at firstname.lastname@example.org.
Michael J. Hammel
(http://www.graphics-muse.org) is a Principal Software Engineer for Colorado Engineering, Inc. (CEI) in Colorado Springs, CO, with over 20 years of software design and development experience. He has written more than 100 articles for numerous online and print magazines and is the author of three books on the GIMP, the premier open source graphics editing package. He is currently working on a MythTV front end design suitable for use with an outdoor DIY projector for summertime movie watching.