File | Date | Author | Commit |
---|---|---|---|
auto-completion | 2017-07-25 | Arun Prakash Jana | [ddb4f5] Update auto-completion scripts |
tools | 2017-01-01 | Arun Prakash Jana | [d0b685] Update Copyright year to 2017. |
.travis.yml | 2017-07-25 | Arun Prakash Jana | [6d56b0] Skip cleanup for deployment |
CHANGELOG | 2017-07-24 | Arun Prakash Jana | [a412f1] Prepare for release v2.4 |
LICENSE | 2016-08-08 | Arun Prakash Jana | [50068d] Initial commit |
Makefile | 2016-10-04 | Arun Prakash Jana | [f42591] Rename utility to imgp. |
README.md | 2017-07-24 | Arun Prakash Jana | [2239ec] Remove note on deb package |
imgp | 2017-07-24 | Arun Prakash Jana | [a412f1] Prepare for release v2.4 |
imgp.1 | 2017-07-24 | Arun Prakash Jana | [dae69b] Update for next release |
imgp
is a command line image resizer and rotator for JPEG and PNG images. If you have tons of images you want to resize adaptively to a screen resolution or rotate by an angle using a single command, imgp
is the utility for you. It can save a lot on storage too.
Powered by multiprocessing, an intelligent adaptive algorithm, recursive operations, shell completion scripts, EXIF preservation (and more), imgp
is a very flexible utility with well-documented easy to use options.
imgp
intends to be a stronger replacement of the Nautilus Image Converter extension, not tied to any file manager and way faster. On desktop environments (like Xfce or LxQt) which do not integrate Nautilus, imgp
will save your day.
For example, if an image has a resolution of 2048x1365 and is being resized to 1366x768:
imgp
could resize 8823 images (approx. 4.5GB in size) of mixed resolutions (high to regular) stored in a USB 2.0 external hard disk at an adaptive resolution of 1366x1000 in around 8 minutes. The resulting size was 897MB (approx. 20%).
imgp
uses Python PIL/Pillow library. Nautilus Image Converter calls the convert
utility from ImageMagick. For a comparative benchmark, head here.
imgp
requires Python 3.5 or later.
To install PIL library on Ubuntu, run:
$ sudo apt-get install python3-pil
or, using pip3:
$ sudo pip3 install pillow
pillow can be replaced by pillow-simd on SIMD processors.
brew install jarun/imgp/imgp
]If you have git installed, clone this repository. Otherwise download the latest stable release or development version (risky).
Install to default location (/usr/local
):
$ sudo make install
To remove, run:
$ sudo make uninstall
PREFIX
is supported. You may need to use sudo
with PREFIX
depending on your permissions on destination directory.
imgp
is a standalone utility. From the containing directory, run:
$ ./imgp
Shell completion scripts for Bash, Fish and Zsh can be found in respective subdirectories of auto-completion/. Please refer to your shell's manual for installation instructions.
usage: imgp [-h] [-x res] [-o deg] [-a] [-c] [-d] [-e] [-f] [-i] [-k] [-m]
[-n] [-p] [-q N] [-r] [-s byte] [-w] [-z]
[PATH [PATH ...]]
Resize, rotate JPEG and PNG images.
positional arguments:
PATH source file or dir [default: current dir]
optional arguments:
-h, --help show this help message and exit
-x res, --res res output resolution in HxV or percentage
-o deg, --rotate deg rotate clockwise by angle (in degrees)
-a, --adapt adapt to resolution by orientation [default: off]
-c, --convert convert PNG to JPG format [default: off]
-d, --dot include hidden files (on Linux) [default: off]
-e, --eraseexif erase exif metadata [default: off]
-f, --force force to exact specified resolution [default: off]
-i, --includeimgp re-process _IMGP files. * RISKY: refer to docs
-k, --keep skip (but convert, if opted) images with matching
specified hres or vres or --res=100 [default: off]
-m, --mute operate silently [default: informative]
-n, --enlarge enlarge smaller images [default: off]
-p, --optimize optimize the output images [default: off]
-q N, --quality N quality factor (N=1-95, JPEG only) [default: 75]
-r, --recurse process directories recursively [default: off]
symbolic links are ignored
-s byte, --size byte minimum size to process an image [default: 1024]
-w, --overwrite overwrite source images [default: off]
-z, --debug enable debug logs [default: off]
PATH
is omitted, the current directory is processed.--overwrite
option is not used. By default _IMGP files are not processed. Doing so may lead to potential race conditions when --overwrite
option is used.--convert
is used). Run imgp --convert
to convert those.--optimize
and --eraseexif
options.--optimize
is slower, the encoder makes an extra pass over the image in order to select optimal encoder settings.Convert some images and directories:
$ imgp -x 1366x768 ~/ ~/Pictures/image3.png ~/Downloads/
/home/testuser/image1.png
3840x2160 -> 1365x768
11104999 bytes -> 1486426 bytes
/home/testuser/image2.jpg
2048x1365 -> 1152x768
224642 bytes -> 31421 bytes
/home/testuser/Pictures/image3.png
1920x1080 -> 1365x768
2811155 bytes -> 1657474 bytes
/home/testuser/Downloads/image4
2048x1365 -> 1152x768
224642 bytes -> 31421 bytes
Scale an image by 75% and overwrite the source image:
$ imgp -x 75 -w ~/image.jpg
/home/testuser/image.jpg
1366x767 -> 1025x575
120968 bytes -> 45040 bytes
Rotate an image clockwise by 90 degrees:
$ imgp -o 90 ~/image.jpg
120968 bytes -> 72038 bytes
Adapt the images in the current directory to 1366x1000 resolution. Visit all directories recursively, overwrite source images, ignore images with matching hres or vres but convert PNG images to JPEG.
$ imgp -x 1366x1000 -wrack
Set hres=800 and adapt vres maintaining the ratio.
$ imgp -x 800x0
Source omitted. Processing current directory...
./image1.jpg
1366x911 -> 800x534
69022 bytes -> 35123 bytes
./image2.jpg
1050x1400 -> 800x1067
458092 bytes -> 78089 bytes
Process images greater than 50KB (50*1024 bytes) only:
$ imgp -wrackx 1366x1000 -s 51200