ImageMagick
According to Wikipedia:
- ImageMagick is a free and open-source software suite for displaying, converting, and editing raster image and vector image files. It can read and write over 200 image file formats.
Installation
Install the imagemagick package. Alternatively install graphicsmagick for GraphicsMagick, a fork of ImageMagick, emphasizing stability of the API and command-line interface.
Usage
See ImageMagick(1), or gm(1) for GraphicsMagick.
Popular operations include -append
, -resize
, -rotate
, -quality
and many more. For example, to combine multiple pictures into one:
$ convert -append input.pngs output.png
To crop part of multiple images and convert them to another format:
$ mogrify -crop WIDTHxHEIGHT+X+Y -format jpg *.png
Where WIDTH and HEIGHT is the cropped output image size, and X and Y is the offset from the input image size.
Screenshot taking
An easy way to take a screenshot of your current system is using the import(1) command:
$ import -window root screenshot.jpg
import
is part of the imagemagick package.
Running import
without the -window
option allows selecting a window or an arbitrary region interactively. With -pause
you can specify a delay in which you can, for example, lower some windows.
$ gm import -window root screenshot.jpg
.Screenshot of multiple X screens
If you run twinview or dualhead, simply take the screenshot twice and use imagemagick
to paste them together:
import -window root -display :0.0 -screen /tmp/0.png import -window root -display :0.1 -screen /tmp/1.png convert +append /tmp/0.png /tmp/1.png screenshot.png rm /tmp/{0,1}.png
Screenshot of individual Xinerama heads
Xinerama-based multi-head setups have only one virtual screen. If the physical screens are different in height, you will find dead space in the screenshot. In this case, you may want to take screenshot of each physical screen individually. As long as Xinerama information is available from the X server, the following will work:
#!/bin/sh xdpyinfo -ext XINERAMA | sed '/^ head #/!d;s///' | while IFS=' :x@,' read i w h x y; do import -window root -crop ${w}x$h+$x+$y head_$i.png done
Screenshot of the active/focused window
The following script takes a screenshot of the currently focused window. It works with EWMH/NetWM compatible X Window Managers. To avoid overwriting previous screenshots, the current date is used as the filename.
#!/bin/sh activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)") activeWinId=${activeWinLine:40} import -window "$activeWinId" /tmp/$(date +%F_%H%M%S_%N).png
Alternatively, the following should work regardless of EWMH support:
$ import -window "$(xdotool getwindowfocus -f)" /tmp/$(date +%F_%H%M%S_%N).png
-frame
or removing -f
from the xdotool
command.See also
- ImageMagick website for an extensive list of options and examples.
- List of applications/Multimedia#Image processing