ImageMagick:缩小图像尺寸

use*_*827 4 photoshop imagemagick imagemagick-convert

我正在使用 ImageMagick 来降低图像分辨率、高度和宽度。

我注意到了一些事情。当我通过 Photoshop(第 7 版)将“图像大小”的分辨率从 300dpi 更改为 150dpi 时,图像的高度和宽度会自动更改。

但是使用 ImageMagick 我没有得到这样的变化。例如,如果图像在 300dpi 时包含 878 宽和 179 高,当将其更改为 150 dpi 时,图像宽度将自动分别更改为 439 和 89。

任何人都可以支持我如何通过 ImageMagick 获得此类更改。

Rud*_*ela 7

要调整图像大小以保持渲染大小相同,您可以使用该-resample 选项,如下所示:

$ convert original.jpg -resample 150x150 new.jpg
Run Code Online (Sandbox Code Playgroud)

使用您的示例,如果原始图像是 300DPI 的 878x179 图像,则结果是 150DPI 的 439x90 图像:

$ 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
Run Code Online (Sandbox Code Playgroud)

您也可以将 -density 选项与选项一起使用 -resize 以达到相同的效果:

$ convert original.jpg -density 150x150 -resize 50%x50% new.jpg
Run Code Online (Sandbox Code Playgroud)

总之:

  • -density 只需设置 DPI 元数据而不更改底层图像;
  • -resize 在不改变 DPI 的情况下更改图像大小;
  • -resample 更改 DPI 并相应地调整图像大小。

用途

当您需要打印图像或将其转换为PDF时,DPI元数据是相关的

现在您可以将两个图像转换为 PDF 并获得具有基本相同页面大小的文件:

$ 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
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 6

dpi设置在大多数成像应用程序/领域中并不真正相关,直到您想要打印图像时为止。

真的需要设置吗?我的意思是,如果您想将图像大小减半,只需使用 ImageMagick 并执行以下操作:

convert input.jpg -resize 50x50% output.jpg
Run Code Online (Sandbox Code Playgroud)

并忽略 dpi。