ImageMagick能够返回图像的大小吗?

36 浏览
0 Comments

ImageMagick能够返回图像的大小吗?

我正在使用命令行中的ImageMagick来调整图片大小:

convert -size 320x240 image.jpg

然而,我不知道如何确定最终图片的尺寸。由于这是一个等比例的图片缩放,新图片的尺寸很可能是100x240或320x90(而不是320x240)。

我可以调用'convert'命令来调整图片大小并返回新图片的尺寸吗?例如,伪代码:

convert -size 320x240 -return_new_image_dimension image.jpg   // 返回新调整后图片的尺寸

0
0 Comments

ImageMagick可以返回图像的尺寸吗?这个问题的出现是因为使用identify命令获取图像尺寸的方法有两种格式,其中一种是使用%[fx:w]x%[fx:h]来获取,而另一种是使用%[w]x%[h]来获取。有人好奇为什么使用identify -format "%[fx:w]x%[fx:h]"这种格式更可取,而不是使用identify -format "%[w]x%[h]"这种格式。但是也有人认为这两种格式应该是没有区别的,因为很难想象在2009年的时候并不支持%w和%h。但是如果fx:有一些副作用的话,我想我也会提到的。很奇怪,我会进行一些测试。

解决方法是使用identify命令配合-format参数来获取图像的尺寸。其中,%[fx:w]表示图像的宽度,%[fx:h]表示图像的高度。通过使用这种格式,可以方便地获取图像的尺寸信息。

0
0 Comments

问题出现的原因是对于某些图片,使用ImageMagick的%w和%h格式获取的图像大小与实际大小不一致。根据文档,%w代表当前宽度,%[width]代表原始宽度,这可能导致混淆。对于大多数情况,%w和%h可能是正确的,但不适用于所有图片。

解决方法是使用%[width]和%[height]格式来获取图像的原始宽度和高度。以下是使用identify命令来获取图像大小的示例代码:

identify -ping -format '=> %[width] %[height]' image.jpg
=> 2678x3318

通过这种方式,可以获取到与Photoshop一致的图像大小。

0
0 Comments

ImageMagick是一款用于处理图像的开源软件。在使用ImageMagick时,有时会需要获取图像的尺寸信息,但不希望加载整个图像到内存中。为了解决这个问题,ImageMagick提供了一个选项-ping,可以高效地确定图像的属性。

根据stackoverflow的回答,我们可以使用以下命令获取图像的宽度和高度:identify -ping -format '%w %h' image.jpg。其中,identify是ImageMagick的命令行工具,-ping表示使用高效方式确定图像属性,-format '%w %h'表示以宽度和高度的格式输出结果。

为了验证-ping选项的效果,可以使用一些大尺寸的图像进行测试。例如,从Wikimedia的“大图像”分类中选择了一张超高分辨率的梵高《星空》图像,尺寸为29,696 × 29,696像素,文件大小为175.67 MB。可以使用wget命令下载图像:wget -O image.jpg https://upload.wikimedia.org/wikipedia/commons/e/e8/Van_Gogh_-_Starry_Night_-_Google_Art_Project-x0-y0.jpg

使用identify命令获取图像的尺寸信息时,可以使用-ping选项和不使用-ping选项进行对比。测试发现,在这个例子中,-ping选项并没有对时间产生影响,可能只对其他图像格式有效。测试环境为ImageMagick 6.9.10和Ubuntu 20.04。

总之,通过使用-ping选项,我们可以高效地获取图像的尺寸信息,而不需要加载整个图像到内存中。这对于处理大尺寸图像或需要频繁获取图像尺寸的场景非常有用。

另外,如果想要快速获取图像的尺寸而不是文件大小,可以参考stackoverflow上的相关问题

0