Resize an image to fit size
2021.5.5
It is the case that I often need to resize a bunch of PNGs of random sizes to a maximum height of 350px, preserving ratio.
Many people would use some many-MB-weighted GUI bloatware and multiple mouse clicks to achieve that (expecially on w1nd0w5). Computer users who love computers choose the CLI way.
ImageMagick is the solution, and is likely to be
packaged for your OS.
Once installed, you can run convert
from the shell.
Now to resize 1.png
to fit the desired size you can do:
$ file 1.png
1.png: PNG image data, 2119 x 1056, 8-bit/color RGB, non-interlaced
$ convert 1.png -resize 350x350 1-350.png
$ file 1-350.png
1-350.png: PNG image data, 350 x 174, 8-bit/color RGB, non-interlaced
This is already amazing, but I need the image height to be 350px.
To do that, you specify only the height.
$ convert 1.png -resize x350 1-350.png
$ file 1-350.png
1-350.png: PNG image data, 702 x 350, 8-bit/color RGB, non-interlaced
Great! Now I need to do the same thing for every image in this directory.
Let’s find
them.
$ ls
1.png 2.png 3.png 4.png
$ mkdir ../out
$ find . -type f -exec convert {} -resize x350 ../out/{} \;
$ file ../out/*
../out/1.png: PNG image data, 239 x 350, 8-bit/color RGB, non-interlaced
../out/2.png: PNG image data, 178 x 350, 8-bit/color RGB, non-interlaced
../out/3.png: PNG image data, 632 x 350, 8-bit/color RGB, non-interlaced
../out/4.png: PNG image data, 204 x 350, 8-bit/color RGB, non-interlaced
Nice.