Resize to Inches Using ImageMagick Convert? - imagemagick

I'm using the following command to resize all the images in a folder:
convert folder\*.png" -format jpg -resize 1573 -quality 70 -strip -density 72 -interlace Plane -set filename:fname %t-1 +adjoin "C:\Users\%USERNAME%\Desktop\New folder\%[filename:fname].jpg"
It works, but instead of resizing to 1,573 pixels, I'd like to resize to 8.5 inches in width and 11 inches in height. How can I do that using ImageMagick Convert?

The "print size" of an image is the combination of its size in pixels and it print resolution, the matter being just metadata:
print size (inches) = size in pixels ÷ print resolution (in PPI)
So to change your image to 8.5×11 inches you can just change the resolution:
Necessary resolution = 1513 pixels ÷ 11 inches = 138PPI
The usual tool to edit metadata is ExifTool:
exiftool -xresolution=138 -yresolution=138 -v2 your_image.jpg
This of course assumes that your image is already in the 11 ÷ 8.5 aspect ratio. Otherwise you compute different X and Y print resolutions or first crop the image to achieve the proper aspect ratio.
Also, watch out for low resolution values. If you have text or sharp lines in the image (logo, CGI) 150PPI is on the low side...

Related

ImageMagick Montage: Setting image size and page size

I am trying to use montage to print proxies for a card game I am developing (similar to Magic: the Gathering). I want the set the page size to letter, display four images per page, and have the images at 2.5 x 3.5 inches at 300 DPI.
I use the -page letter argument to get the right page size. I set -tile 2x2 so that I have four images per page. I set geometry +10+10 to get some space between the images.
However, montage resizes the images and they each take about 1/4 of a page, which is much bigger than what I want. I tried setting the pixels on geometry, for example, -geometry 744x1039+10+10 -density 300 which is 2.5 x 3.5" in 300 DPI, however, that did not work -- the image sizes remain the same.
How can I set the page DPI to 300 and the size of each image in the montage to 2.5" x 3.5"?

ImageMagick Resize Images Proportionately in Landscape & Portrait Mode

I'm trying to reduce the resolution of a large number of images using ImageMagick. The photos' original size is 5312 x 2988 pixels. The new dimensions should be 2000 x 1125 px.
Here is the command I'm using:
mogrify -path "C:\Users\Joe\Desktop\img\new" -resize 2000x1125 -auto-orient -format jpg -quality 75 "C:\Users\Joe\Desktop\img\*.jpg"
It works great for images that are in landscape mode. The problem is for images that are in portrait mode, with a resolution of 2988 x 5312 px. When I run the above command, their resulting size is 633 x 1125 px instead of 1125 x 2000.
Which command can I run that will produce, if the original image is 5312 x 2988, a resulting image of 2000 x 1125 (landscape). Or, if the original image is 2988 x 5312 (portrait), a resulting image of 1125 x 2000 pixels? It should be a single command since I have large number of images in a folder in both landscape and portrait modes.
Basically, the largest dimension should be 2000. If the photo is in landscape, the width should be 2000 px and the height should scale down proportionately. If the photo is in portrait mode, the height instead should be 2000 px.
The answer, as Mark suggested, ended up being using the -resize flag with only one parameter, e.g.: -resize 2000. When only one parameter is specified, the longest side will be 2000 (the other dimension will be scaled automatically and proportionately).
The caveat was, if you're using the -auto-orient flag in the same command, make sure to place -auto-orient AFTER -resize. That way, ImageMagick disregards image orientation when resizing.
mogrify -path "C:\Users\Joe\Desktop\Folder\New" -resize 2000 -format jpg -quality 75 -auto-orient "C:\Users\Joe\Desktop\Folder\*.jpg"
The key being calling -resize BEFORE -auto-orient.

How do I convert jpg image to tiff with 300DPI and reduce noise to 100% in Image magic?

I have been working on an image from last 25 days with zero output. So I came here in search of an answer.
I have a jpg image of 7MB. I upload it in Photoshop and changed the width to 96 Inch, Resolution for 300 pixels/inch, checked resample option and selected Preserve Details 2.0 and reduce noise to 100%. It gave me a 1.5 GB image as output.
Now I tried the same steps in image magic
gm convert -scale 768 -units PixelsPerInch -density 300x300 -resample 300x300 -noise 100% image.jpg -resize 768 image.tiff
Above command gave output in KBs. I need help.
If you want a 96inch wide image at 300dpi, you will need a width of 28,800 pixels, so start with:
gm convert input.jpg -resize 28800x result.jpg
That will resize the image to the correct width and do whatever is required with the height to preserve the image's aspect ratio - i.e. without distorting it.

Effective gravity at high density - ImageMagick

At a high density like 300 dpi other than the default density 72 dpi the following ImageMagick convert command outputs blank pages. It looks strange to me.
"convert -units PixelsPerInch -density 300 $myfiles -page A4 -gravity center test.pdf"
Anyone like to exchange idea?
gravity parameter here isn't effective appropriately
(unable to align the object)
as it can't recognize the position & resolution of A4 page at 300 dpi. This is why the questioned command is outputting blank pages at 300 dpi.
We should avoid using page parameter if density is already defined. ImageMagick has a parameter called extent that can be used to define the resolution of a page at a given density (here 300 dpi). Thus we should use extent instead of page in this case in order to achieve the desired output.
For example,
resolution of A4 size page at 300 dpi is 2480x3508, thus correct command for a set density like 300 dpi shall be:
"convert -units PixelsPerInch -density 300 $myfiles -gravity center -extent 2480x3508 test.pdf"
Here, resolution of extent parameter should be proportionately equal to the set density for any specific page size.

ImageMagick: reduce image size

I am using ImageMagick to reduce the image resolution, height and width.
I have noticed a few things. When I am changing resolution at "Image Size" through Photoshop (version 7) from 300dpi to 150dpi image height and width automatically change.
With ImageMagick however I am not getting such variations. For example, if image contains 878 width and 179 height at 300dpi, when changing it to 150 dpi, automatically the image width changing to 439 and height 89 respectively.
Can any one support me how to obtain such changes through ImageMagick.
The dpi setting is not really relevant in most imaging applications/areas, until the point at which you want to print an image.
Do you really need to set it? I mean, if you want to half the size of an image, just use ImageMagick and do:
convert input.jpg -resize 50x50% output.jpg
and ignore the dpi.
To resize the image keeping the rendered size the same, you can use the -resample
option, like so:
$ convert original.jpg -resample 150x150 new.jpg
Using your example, if the original is an 878x179 image at 300DPI,
the result is an 439x90 image at 150DPI:
$ file original.jpg
original.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 300x300,
segment length 16, baseline, precision 8, 878x179, frames 3
$ file new.jpg
new.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 150x150,
segment length 16, baseline, precision 8, 439x90, frames 3
You can alternatively use the
-density
option along with the
-resize
option to achieve the same effect:
$ convert original.jpg -density 150x150 -resize 50%x50% new.jpg
In summary:
-density
just sets the DPI metadata without changing the underlying image;
-resize
changes the image size without changing the DPI;
-resample
changes the DPI and resizes the image accordingly.
Uses
The DPI metadata is relevant when you need to print an image or convert it to a PDF.
Now you can convert both images to PDF and get files with essentially the same page size:
$ convert original.jpg original.pdf
$ convert new.jpg new.pdf
$ pdfinfo original.pdf | grep -a "Page size:"
Page size: 210.72 x 42.96 pts
$ pdfinfo new.pdf | grep -a "Page size:"
Page size: 210.72 x 43.2 pts

Resources