ImageMagick能够返回图像的大小吗?
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]表示图像的高度。通过使用这种格式,可以方便地获取图像的尺寸信息。
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上的相关问题。