使用批处理脚本获取图像尺寸(ImageMagick)

时间:2014-03-13 23:17:47

标签: batch-file imagemagick

我尝试做的是使用ImageMagick在图像上创建边框。 这是一个简单的过程,我可以使用硬编码值手动完成,但我希望它是聪明的。 它需要做的是,能够简单地定义你想要边框的图像,然后脚本运行,获取图像的尺寸,然后调整我对这些尺寸的边框图像的大小,并拍打顶部的边界。

为此,根据我的基本理解,我必须将图像的宽度和高度存储为变量。我得到的最近(实际得到的信息)是

identify "image.png"

那会吐出我需要的信息,但是我需要将宽度/高度存储到变量中以便在以后的过程中使用它们。 我从https://superuser.com/questions/323970/how-can-i-get-the-image-dimensions-of-a-targa-file-through-a-batch-script

找到了以下代码

(注意:我的.bat文件名为" imagecheck.bat"

identify -format "imagecheck2.bat %w %h" image.png > temp.bat
temp.bat

从该代码的海报所说的,它将从image.png获得宽度和高度(%w和%h),然后将其存储在imagecheck2.bat中作为我可以作为%1访问的变量(对于% w)和%2(对于%h)

所以,据说,在imagecheck2.bat里面,我有

@echo off
echo The parameters were: %1 and %2
pause

打印出来

The parameters were:  and 

这应该是一件简单的事情;我缺少什么想法? 提前谢谢。

2 个答案:

答案 0 :(得分:10)

这是一种可以在不使用任何辅助文件的情况下完成此操作的方法。

for /f "tokens=1-2" %%i in ('identify -ping -format "%%w %%h" logo:') do set W=%%i & set H=%%j
echo width: %W%
echo height: %H%

将“logo:”替换为图像的文件名。

尽管如此,我强烈建议不要使用MS Batch,因为程序越复杂,代码就越荒谬。

顺便说一句,在该识别命令中使用-ping标志会大大加快操作速度,因为它告诉标识不要将整个图像加载到内存中,只需足以计算尺寸。< / p>

答案 1 :(得分:2)

您可以简单地将宽度和高度拉出PNG,而不是使用ImageMagick。它们位于已知位置,每个都是网络字节顺序的4字节整数(最高有效字节优先)。从文件开头的偏移是

 signature:   bytes 0-7
 IHDR length: bytes 8-11
 "IHDR":      bytes 12-15
 width:       bytes 16-19
 height:      bytes 20-23