home | tech | misc | code | bookmarks (broken) | contact | README


ImageMagick notes

ImageMagick is a a set of wonderful program that manipulates images in batch. The tool I most use from ImageMagick is convert. I personally recommend the Usage page for lots of examples.

Below are some one line commands on how to use it to solve common problems.

Snippets

Crop ("cut part of") an image

$ convert -crop 1100x760+150+40 input.png output.png

Pay attention to the geometry part. The syntax of the command is:

$ convert -crop {width}x{height}+{x}+{y} input_file output_file

Scale an image

$ convert -scale 50% input.png output.png

Remove EXIF content from an image

$ convert input.png -strip output.png

This is specially useful to take off information that editors don't recognize and can lead to confusing, like the rotation of the camera.

I thank this link to this tip.

Trim space around an image

There is the -trim option to remove all pixels that are the same colour of the border pixels:

$ convert -trim input.png output.png

You might also want to leave a border, like a white one:

$ convert -trim -border 10%x10% -borderColor White input.png output.png

This and this links helped me to solve this problem.

Convert PDF to JPG and preserve quality

Try the -density option. If you don't use it, the result image can have lower quality, even if you use -scale or -resize. Example:

$ convert -density 200 input.pdf output.jpg

This page helped me.

Change brightness

$ convert -modulate <number> input.jpg output.jpg

<number> is the brightness level. 100 is the normal image level so, if you want it to be more bright, chose a number that is greater than 100. 0 will make the image black.

More information in Color Modifications ImageMagick page.

Croping pages of a PDF document

Maybe (for reasons we'll not explain) you have a scanned PDF document whose canves is bigger than the document part. It might be a good idea to trim that but you don't have Adobe Acrobat or other proprietary tool. Let's use ImageMagick!

Something like that may work:

$ convert -density 300 -crop 3610x2790+1340+0 +repage input.pdf output.pdf

Note that the +repage operator comes later.

Unfortunatelly it might be that the resulting PDF is too big (somebody know why? If so, please, let me know), so it might be a good idea to convert them to images first and then converting them back to PDF:

$ convert -density 300 -crop 3610x2790+1340+0 input.pdf output.png

You might have to check the other of generated files because, because, if it generates 11 files, those will be:

$ ls output-*.png
output-0.png
output-1.png
output-10.png
output-2.png
output-3.png
output-4.png
output-5.png
output-6.png
output-7.png
output-8.png
output-9.png

Realize that the shell sorts output-10.png just after output-1.png, which can give you sort problems. Rename file correctly and convert them back to PDF:

$ convert +repage output-*.png output.pdf

See that the +repage operator is important. See in this thread more about that.

Converting XCF (Gimp) files to PNG and merging all layers

Just use the -flatten option like in this page:

$ convert -flatten input.xcf output.png