58

is there any lightweight command line batch image cropping tool(Linux or Windows) which can handle a variety of the formats ?

pavium
  • 14,808
  • 4
  • 33
  • 50
iceman
  • 4,211
  • 13
  • 65
  • 92

8 Answers8

61

In Linux you can use

mogrify -crop {Width}x{Height}+{X}+{Y} +repage image.png

for CLI image manipulation

galath
  • 5,717
  • 10
  • 29
  • 41
Ralph
  • 611
  • 5
  • 2
  • 2
    homebrew makes short work of this in Mac OS X also. `brew install imagemagick` Then to see your new goodies... `ls -lrt /usr/local/bin/` – Bruno Bronosky Jul 17 '12 at 06:18
  • Note that this doesn't _actually_ crop the image _data_, it only blanks the area sorrounding the cropping rectangle and writes the new dimensions+offsets into image metadata, but the 'physical' dimensions of the image will not be changed. Because of this, this method doesn't work well with GIFs for example. – kralyk Aug 30 '13 at 01:48
  • 5
    P.S. to _actually_ crop the image in the sense in which this operation is commonly understood, use the `+repage` argument along with the crop operator. – kralyk Aug 30 '13 at 01:51
  • 2
    Additionally: trying this I got very confused, until I figured out that the image was actually rotated and the image viewer autorotated it upright. (The right orientation is contained in metadata/exif data I think.) To fix this, I used this: `mogrify -alpha on -auto-orient *.jpg` – Luc Sep 04 '15 at 18:30
  • 2
    @ReactiveRaven Link dead – Bhargav Rao Jan 20 '16 at 07:23
  • 3
    NOTE that `mogrify` will overwrite the image, while `convert` will write to a new one – Ciprian Tomoiagă Mar 17 '17 at 17:44
54

Imagemagick's convert does the trick for me (and much more than cropping):

convert -crop +100+10 in.jpg out.jpg

crops 100 pixels off the left border, 10 pixels from the top.

convert -crop -100+0 in.jpg out.jpg

crops 100 pixels off the right, and so on. The Imagemagick website knows more:

http://www.imagemagick.org/Usage/crop/#crop

Klaus
  • 805
  • 6
  • 7
32

Imagemagick is what you want -- tried and true.

axel_c
  • 6,557
  • 2
  • 28
  • 41
  • 4
    Thought I would share this, I tried pasting the link in MSN messenger to a friend and no matter what it seems it's on a blacklist of MSN. I had to make tinyurl in order to share it. Strange. – ScottN Jul 09 '13 at 23:23
  • 6
    That is very weird. Does MSN Messenger still exist anyway? ;) – axel_c Jul 10 '13 at 16:12
  • 1
    Haha, well, I use Pidgin and it still uses the protocol that MSN had, I believe. Strange the domain would be blocked though. – ScottN Jul 10 '13 at 18:40
  • 4
    This answer doesn't mention any concrete reason for why they would want it nor how to specifically use it for cropping. – metarmask Oct 15 '17 at 15:38
7

I found nconvert pretty handy so far.

Joey
  • 344,408
  • 85
  • 689
  • 683
6
for f in final/**/*;
do
   convert -crop 950x654+0+660 "$f" "${f%.jpg}".jpg
done

This script loops through all the sub-folders and crops the .jpg files.

Jeffry Anto
  • 61
  • 1
  • 3
4

macOS has sips image processing tool integrated. Cropping functions available are:

    -c, --cropToHeightWidth pixelsH pixelsW 
        --cropOffset offsetY offsetH 
wobmene
  • 1,108
  • 9
  • 14
2

Easy with sips: just set the offset to start the cropping:

sips --cropOffset 1 1 -c <height> <width> -o output.png input.png
JHime
  • 21
  • 1
0

I have scanned some pages and all ~130 pages needs the lower ~1/8 of the page cut off.

Using mogrify didn't work for me,

a@a-NC210-NC110:/media/a/LG/AC/Learn/Math/Calculus/Workshop/clockwise/aa$ mogrify -quality 100 -crop 2592×1850+0+0 *.jpg  
mogrify.im6: invalid argument for option `2592×1850+0+0': -crop @ error/mogrify.c/MogrifyImageCommand/4232.

However convert did:

a@a-NC210-NC110:~/Pictures/aa$ convert '*.jpg[2596x1825+0+0]' letter%01d.jpg  
a@a-NC210-NC110:~/Pictures/aa$

I learnt this here under the Inline Image Crop section.

Notice my syntax: I had to put my geometry in brackets: [].

Using the successful syntax above but with mogrify simply didn't work, producing:

a@a-NC210-NC110:~/Pictures/aa$ mogrify '*.jpg[2596x1825+0+0]' letter%01d.jpg
mogrify.im6: unable to open image `letter%01d.jpg': No such file or directory @ error/blob.c/OpenBlob/2638.

Linux a-NC210-NC110 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:12 UTC 2014 i686 i686 i686 GNU/Linux
Lubuntu 14.04 LTS
Chait
  • 1,052
  • 2
  • 18
  • 30
Mr. Comly
  • 1
  • 2