sudo apt update sudo apt build-essential checkinstall # provides all the libraris for compiling sudo apt build-dep imagemagick # install compilation dependencies
The first time I did this installation the program complained and errored that it was missing delegates when I tried to manipulate the png images. This page from StackExchange explained how to install the image libraries. I didn’t know which ones were important or how often they are used so I installed them all.
sudo apt install libx11-dev libxext-dev zlib1g-dev libpng12-dev libjpeg-dev libfreetype6-dev libxml2-dev
This should install all the needed image libraries. Unfortunately, ImageMagick itself can’t be installed the same way. We need to build it.
First download the binary tar, extract it, and move into the newly extracted directory.
wget https://www.imagemagick.org/download/ImageMagick.tar.gz tar xf ImageMagick.tar.gz cd ImageMagick-7*
While in the source code directory execute the
Next compile with the
sudo make install
This will install the compiled binaries. Now run
ldconfig command to link the static libraries.
sudo ldconfig /usr/local/lib
Confirm installation and final check. Run the
identity command to confirm that “something” is installed.
The ImageMagick website also has a couple commands to verify installation.
identify logo.gif display logo.gif
I have a bunch of scan images of an old handwritten recipe book. The originals are in A5 paper size and I’d like each page of the pdf to be the same size. This is pretty simple with ImageMagick’s
cd ImageDir convert *.png \ -resize 595x421 \ -background white \ -gravity North \ -extent 595x421 \ output.pdf
OK, this is complicated and took a couple hours to figure out. So what is going on here?
It’s converting all files in the current directory with the file type .png, so be careful. You can also specify the images explicitly by just listing them out.
The scanned images are high resolution and pretty big, something around 1200x900. I want to save and keep these but the size is too big. The
-resize option is sizing the images to imagemagick 595x421dpi. This is the A5 page size (dots per inch) in landscape.
-gravity must go before
-extent. You can find all the options for an argument using
identify -list <option>. “North” means center the images on the page horizontally and top-aligned vertically.
-extent sets the image size. At page size is dots per inch for A5 is 421x595.
Note: you can specify the dpi with the
-density option. The default is 72dpi so I left it as is.
You can make a lower resolution and smaller file size for web or email.
convert *.png -compress jpeg -resize 595x421 -background white \ -gravity North -extent 595x421 output.pdf
This is an update to the original post. I realized that my family in the US may want a version that can be printed in standard US Letter sizes.
612 x 792
Easily install Exiftool on Ubuntu.
sudo apt install libimage-exiftool-perl
There are a bunch of tutorials on using Exiftool.
Changing the exif data within the pdf file to add some fields is quite easy.
exiftool \ -Creator="Joe" \ -keywords="recipebook;recipes" \ -Author="Grandma" \ output.pdf
This is an automated list of software versions used during the writing of this article.
Software Version OS Ubuntu 20.04 LTS ImageMagick 7.0.10-10