imgp(1)
Resize, rotate JPEG and PNG images.
Description
IMGP
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
https://github.com/jarun/imgp
REPORTING BUGS
https://github.com/jarun/imgp/issues
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.