GraphicsMagick - A Powerful Image Processing CLI Tool for Linux


In this day and age, images play an important role in our daily lives. We use them to communicate, express our creativity, and even conduct scientific research.

However, with the increasing number of digital images being produced every day, there is a need for efficient tools to manage and process these images. This is where GraphicsMagick comes in.

Getting Started with GraphicsMagick

Installation Process on Linux

Before using GraphicsMagick, you need to make sure it is installed on your Linux system. The installation process varies depending on the distribution you are using.

For example, on Ubuntu and Debian-based systems, you can install GraphicsMagick using the following command in your terminal −

sudo apt-get install graphicsmagick  

On other distributions such as Fedora and CentOS, you can use the package manager that comes with those systems. Alternatively, you can download the source code of GraphicsMagick from their website and compile it manually.

Basic Command Line Usage and Syntax

Once you have installed GraphicsMagick, using it is as simple as opening a terminal window and typing commands. The basic syntax for running GraphicsMagick commands is −

gm [options] command [command-options] [input-files]  

The `gm` command is followed by options that modify its behavior such as `-help` to display help information or `-version` to check the current version of GraphicsMagick installed on your system. After options comes the actual command or action that will be performed by GraphicsMagick such as `convert`, `resize`, `crop`, etc.

Understanding File Formats Supported by GraphicsMagick

GraphicsMagick supports a wide range of image file formats including popular ones like JPEG, PNG, GIF, BMP, TIFF as well as some lesser-known ones like PNM (Portable Anymap), PCD (Kodak Photo CD), PCX (IBM PC Paintbrush), etc. It also supports raw camera formats like CR2 (Canon RAW version 2), NEF (Nikon Electronic Format), and other formats from various camera manufacturers.

This makes it a versatile tool for photographers and other professionals who work with digital images. In addition to working with image files, GraphicsMagick can also read and write PDF documents, which makes it useful for tasks like converting PDF pages to individual image files or merging multiple images into a single PDF document.

Image Processing with GraphicsMagick

Image Resizing, Cropping, and Rotation

GraphicsMagick offers a wide range of image manipulation techniques that allow users to resize, crop and rotate images. To resize an image using GraphicsMagick, the user simply specifies the new dimensions of the image in pixels or as a percentage.

gm convert input_image.jpg -resize 800x600 output_image.jpg

This command resizes the "input_image.jpg" to a width of 800 pixels and a height of 600 pixels and saves the output as "output_image.jpg".

gm convert input_image.jpg -crop 400x300+100+50 output_image.jpg

This command crops a region of size 400x300 pixels from the "input_image.jpg" starting at coordinates (100, 50) and saves the output as "output_image.jpg".

gm convert input_image.jpg -rotate 90 output_image.jpg

This command rotates the "input_image.jpg" by 90 degrees clockwise and saves the output as "output_image.jpg".

Color Correction and Manipulation

GraphicsMagick provides powerful tools for manipulating color in images. Users can adjust brightness/contrast settings by specifying values for these parameters using command-line arguments.

GraphicsMagick also allows changing individual color channels' saturation levels (red/green/blue separately). In addition to this, GraphicsMagick provides sophisticated algorithms for auto-color correction.

gm convert input_image.jpg -brightness-contrast 20x10 -gamma 1.2 -modulate 120,150,100 output_image.jpg

Adding Text or Watermarks to Images

Watermarks are vital additions to photographs used online because they allow photographers to protect their work from copyright infringement or theft. With GraphicsMagick's "composite" command option, users can add watermarks or text overlays on their photos easily.

The composite command in GraphicsMagick enables users to specify the position (x,y) of where they want their watermark/text overlay added; this can be done relative to either one of four corners or center positions.

Here's an example command to add a red watermark with the text "Sample Watermark" to an image called "input.jpg" and save it as "output.jpg" −

gm convert input.jpg -fill "red" -pointsize 30 -draw "text 10,10 'Sample Watermark'" output.jpg

Make sure to adjust the coordinates (x and y) and other parameters as per your requirements.

Advanced Features of GraphicsMagick

Batch Processing Multiple Images at Once

GraphicsMagick's batch processing feature allows you to process multiple images simultaneously with a single command. This is particularly useful when working with large sets of images or when time is of the essence.

To use this feature, create a text file listing the names of all the images you want to process. Then, run the following command −

gm batch -file [text_file_name] [command]. 

We can create a text file called "resize_and_compress.txt" listing all these images and run the following command −

gm batch -file resize_and_compress.txt -resize 800x600 -quality 80. 

This will resize all the listed images to 800x600 and set their quality level to 80.

Creating Animated GIFs or Video Files from Image Sequences

GraphicsMagick also offers a powerful animation feature that allows you to create animated GIFs or video files from image sequences. This is great for creating simple animations or timelapse videos. To create an animated GIF from an image sequence, simply run the following command −

gm convert -delay 10 -loop 0 *.jpg output.gif. 

The -delay argument specifies how long each frame should be displayed (in tenths of a second), and the -loop argument tells GraphicsMagick whether to loop endlessly (0) or play only once (1). The *.jpg argument lists all JPEG files in the current directory, while output.gif specifies the output file name.

Converting Between Different Image Formats

GraphicsMagick supports a wide variety of image formats, including JPEG, PNG, GIF, BMP, TIFF, and more. However, sometimes you may need to convert an image from one format to another.

To do this with GraphicsMagick, simply run the following command −

gm convert [input_file] [output_file]

where [input_file] is the name of your input file and [output_file] is the desired name for your output file. GraphicsMagick will automatically detect the input file format based on its extension and convert it to the appropriate output format based on the specified extension.

For example, let's say you have an image called "input.jpg" in JPEG format, and you want to convert it to PNG format and save it as "output.png". You would use the following command −

gm convert input.jpg output.png

This will convert the image from JPEG to PNG format and save it as "output.png" in the current directory.

Niche Applications of GraphicsMagick

Using GraphicsMagick in Web Development for Optimizing Images for the Web

In today's digital world, a fast and responsive website is crucial to engage visitors and retain their interest. However, large image files can significantly slow down site loading speeds and negatively impact user experience.

This is where GraphicsMagick comes in handy. With its powerful image optimization capabilities, GraphicsMagick can reduce image file sizes while maintaining visual quality, making it an ideal tool for web developers.

GraphicsMagick offers several features that enable web developers to optimize images for the web efficiently. For instance, the tool can resize images to specified dimensions without distorting their aspect ratio or losing resolution quality.

Utilizing GraphicsMagick in Scientific Research for Analyzing and Processing Images

GraphicsMagick is also widely used in scientific research to analyze and process complex data sets represented as images. The tool offers advanced visualization capabilities that enable researchers to explore data visually in unprecedented detail. For instance, researchers use GraphicsMagick to generate 2D or 3D plots of data sets with multiple dimensions as well as create informative graphics such as scatterplots or heatmaps.


GraphicsMagick is a powerful image processing CLI tool for Linux that provides extensive functionality for manipulating and optimizing images. By understanding best practices for optimizing image quality while minimizing file size, troubleshooting common issues, and accessing resources for further learning about advanced features, you can maximize your use of this powerful tool.

Updated on: 23-Aug-2023


Kickstart Your Career

Get certified by completing the course

Get Started