table of contents
IMGP(1) | User Commands | IMGP(1) |
NAME¶
imgp - Resize, rotate JPEG and PNG images.
SYNOPSIS¶
imgp [OPTIONS] [PATH [PATH ...]]
DESCRIPTION¶
imgp is a multiprocessing command line image resizer and rotator for JPEG and PNG images.
Features
* resize by percentage or resolution
* rotate clockwise by specified angle
* adaptive resize considering orientation
* brute force to a resolution
* optimize images to save more space
* limit processing by minimum image size
* convert PNG to JPEG
* erase exif metadata
* specify output JPEG image quality
* force smaller to larger resize
* process directories recursively
* overwrite source image option
Adaptive mode
- If the specified and image orientations are same [(H >= V and
h > v) or (H < V and h < v)], the image is resized with the longer
specified side as reference.
- In case of cross orientation [(H >= V and h <= v) or (H < V and h
>= v)], the image is resized with the shorter specified side as
reference. Same as non-adaptive.
For example, if an image has a resolution of 2048x1365 and is
being resized to 1366x768:
- In regular mode (default), output image resolution will be 1152x768
- In adaptive mode, output image resolution will be 1366x910
Operational notes
- Multiple files and directories can be specified as source. If
PATH is omitted, the current directory is processed.
- Output image names are appended with _IMGP if '--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.
- PNG files with lower target hres/vres are not converted (even if '--convert'
is used). Run 'imgp --convert (*.png)' separately to convert those.
- Resize and rotate are lossy operations. For additional reductions in size
try '--optimize' and '--eraseexif' options.
- Option '--optimize' is slower, the encoder makes an extra pass over the
image in order to select optimal encoder settings.
- Progressive JPEG images are saved as progressive.
OPTIONS¶
- -h, --help
- Show help text and exit.
- -x, --res=res
- Output resolution in HRESxVRES or percentage.
- -o, --rotate=deg
- Rotate clockwise by a specified angle (in degrees). Negative inputs rotate anti-clockwise. Rotation by 0 degree is not allowed.
- -a, --adapt
- Adapt to specified resolution considering the orientation of the image. Disabled by default.
- -c, --convert
- Convert PNG images to JPEG to save on space. The output image is saved with '.jpg' extension.
- -e, --eraseexif
- Erase EXIF metadata of JPEG images. Preserved by default.
- -f, --force
- Force to the exact specified resolution. Disabled by default.
- -H, --hidden
- Include hidden (dot) files. By default hidden files are skipped. -i, --includeimgp Process _IMGP files. Risky due to potential race conditions.
- -k, --keep
- Do not process if image hres or vres matches specified hres or vres, or --res is 100. However, PNG images are converted to JPEG if --convert option is specified and JPEG images are made progressive is --progressive option is specified.
- -n, --enlarge
- Enlarge smaller images. By default smaller images are not scaled if specified resolution is greater.
- -N --nearest
- Use nearest neighbour interpolation for PNG images instead of default antialias.
- -p, --optimize
- Optimize output images using PIL library optimization algorithm. Disabled by default.
- -P, --progressive
- Save all output JPEG images as progressive, even if the source is not.
- -q, --quality=N
- Save the image with a specified quality factor N (scale 1-95, default 75). JPEG only.
- -m, --mute
- Do not show any operational output.
- -M, --minresres
- minimum resolution in HxV or percentage of --res to resize
- -r, --recurse
- Recursively process sub-directories. By default only the specified directory is processed. Symbolic links are ignored to avoid recursive loops.
- -s, --size=byte
- Minimum size in bytes required to process an image. Acts as a guard against processing low-resolution images. Default 1024 bytes.
- -w, --overwrite
- Overwrite the source images. By default an output image is saved with
_IMGP appended to the source image name.
NOTE: If overwrite and convert options are used together, source PNG images are deleted. - -d, --debug
- Enable debugging.
EXAMPLES¶
- 1.
- 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
- 2.
- 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
- 3.
- Rotate an image clockwise by 90 degrees:
-
$ imgp -o 90 ~/image.jpg 120968 bytes -> 72038 bytes
- 4.
- 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
- 5.
- 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
- 6.
- Process images greater than 50KiB only:
-
$ imgp -wrackx 1366x1000 -s 51200
- 7.
- Generate thumbnail of the last modified file in the current dir:
-
#!/usr/bin/env sh thumb64 () {
pop=$(ls -1t | head -1)
imgp -acx 64x64 "$pop" }
AUTHORS¶
Arun Prakash Jana <engineerarun@gmail.com>
HOME¶
REPORTING BUGS¶
LICENSE¶
Copyright © 2016-2020 Arun Prakash Jana <engineerarun@gmail.com>
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO
WARRANTY, to the extent permitted by law.
01 Dec 2020 | Version 2.8 |