Image file manipulation is typically associated with programs like Inkscape, Photoshop, or even MS Paint. A graphical user interface, however, isn’t a pre-requisite for manipulating images. Often it is overkill. Simple tasks such as resizing or converting file type can be achieved with little more than a right click (and the power of ImageMagick).
ImageMagick is a command-line, Swiss-army-knife of image manipulation. It can achieve all the usual manipulations: sharpen, rotate, resize, convert to grayscale, convert to a sketch. The list goes on… Instead of harnessing all its creative power, here I show how ImageMagick commands can be added to the right-click menu (in either Windows or Linux) to achieve simple changes without ever opening the file.
Note: Other command-line tools with similar capabilities can be used in place of ImageMagick’s magick
or convert
commands. For example, Ghostscript, Inkscape, or ps2pdf.
Instructions for Windows users
- Download and install ImageMagick.
- Go to the “Send To” folder. To get there, type
sendto
in the address bar in Windows Explorer. - In this folder, create a new text file with a
.bat
extension. This indicates that the file is a “batch” file, and will be treated as a command/script. - Edit the batch file to include the desired command:
- The simplest example of an ImageMagick command is
magick input.png input_converted.jpg
- Older versions (<v7) of ImageMagick used the
convert
command in place ofmagick
- The simplest example of an ImageMagick command is
- Replace ‘input.png’ and ‘output.jpg’ with variables:
input.png
becomes"%~dpnx1"
input_converted.jpg
becomes"%~dpn1_converted.jpg"
- This appears nonsensical, but it’s actually straightforward:
The quotation marks shown are necessary - The total content of the batch file is therefore the following single command
magick "%~dpnx1" "%~dpn1_converted.jpg"
- To invoke the batch script, right-click and go into the Send To menu:
The five batch files provide a glimpse of the possible file manipulation - Get creative and create batch files for every manipulation you find yourself repeating.
Troubleshooting
A likely reason for the above steps to not work as expected is because Windows cannot locate the magick
command. Try the following:
- Logging out and back in.
- Head to the command prompt (Press Win + R, then type
cmd
, and hit enter), typemagick
, and hit enter. If you get an error, then the command is not on your path. Easiest solution is to unistall ImageMagick and reinstall. As noted above, older versions for ImageMagick useconvert
, notmagick
. - Add a second line to your batch file with the command
pause
. This will display the error produced by the batch file.
Instructions for Linux Users
Implementing right-click actions on Linux depends on the file manager used. The following instructions work for Nemo, but the early steps are reasonably generic. For example, the first four steps are the same for Nautilus (changing each mention of nemo
to nautilus
, of course).
- Download and install ImageMagick
sudo apt-get imagemagick
- In the directory
~/.local/share/nemo/scripts
create a shell file (let’s call itconvert2png.sh
).
Edit the file to contain#!/bin/bash file_in="$@" file_wo_ext=$(echo $file_in | cut -f 1 -d '.') convert "$file_in" "$file_wo_ext".png
Note the use of
convert
. Newer versions (>v7) of ImageMagick use the commandmagick
instead. - Ensure the script is executable
chmod +x convert2png.sh
- The script is now available from the right-click menu via the “scripts” sub-menu
- To simplify things further, create a second file in
~/.local/share/nemo/actions
(let’s call itconvert2png.nemo_action
)
Edit the file to contain[Nemo Action] Name=convert2png Exec=/home/username/.local/share/nemo/scripts/convert2png.sh "%F" Selection = any Extensions=jpg;pdf;svg;
Be sure to replace
username
. Also, note the quotes around %F which are necessary if the filename has spaces in it. - Note the final line of the nemo_action file. Right-clicking on a file with any of those three extensions will provide the option directly in the right-click menu.
Nice post! Is it also possible to convert all tif or png files in one folder in one go? Preferably while putting them into their own subfolder? Whould you be willing to post the code for the 4 addtional menu items you show above in the “send to ” menu?
I’m sure it’s possible to do all files at once, but it’d take some clever multi line batch scripting that I have limited experience with. I’ll have a look in a couple of days to see if I can find my old scripts for the other menu items
Some of the other examples use tools other than imagemagick. You’ll need to install ghostscript (gs) and pdftops to make the second and third commands work, respectively. And change the absolute paths
colour2bw.bat is
magick “%~dpnx1” -colorspace gray “%~dpn1_bw%~x1”
pdf_compress.bat is
“C:\Program Files\gs\gs9.04\bin\gswin32c.exe” -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -r300 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=”%~dpn1_compress.pdf” “%~dpn1.pdf”
pdf2eps.bat is
“C:\Program Files\xpdf\pdftops.exe” -eps %~dpn1.pdf
a ton of options when it comes to converting images with a right click, but a lot of those image-centric programs can really clutter up your right-click menu. SendTo-Convert puts one simple option in your context menu that converts images in seconds.