1

使用识别命令,我得到了一些关于图像的信息,它看起来像这样

my_image.png PNG 154x78 154x78+0+0 8 位 DirectClass 946B 0.000u 0:00.000

图像尺寸为 154x78

但我不知道如何将这些值放入变量中

w=154 #But I want this 154 to be somehow parsed...
h=78

请注意,此解析脚本应适用于所有类型的图像,而不仅仅是 .png 扩展名

如果可能的话,我想知道这条线 154x78+0+0 中的 0+0 是什么

谢谢

4

2 回答 2

7

这是一个很难编写正则表达式的情况,因为我们不知道文件名是否包含空格或扩展名。更容易将format开关用于identify

identify -format '%w' filename.jpg
3360
identify -format '%h' filename.jpg
1080

在 bash 中,你会写:

W=`identify -format '%w' filename.jpg`
H=`identify -format '%h' filename.jpg`

+0+0是图像的偏移量+0+0仅表示从轴开始,然后在0轴上。您可以在 imagemagick 手册中阅读更多内容。x0y

马克·塞切尔编辑

上述答案非常好,我不想添加竞争答案,只是一个澄清,或小改进,太大而无法评论......

由于 OP 正在使用bash,他可以一次获得宽度和高度,而无需多次打开图像,如下所示:

read w h < <(identify -format "%w %h" filename.jpg)

连同其他任何东西,例如色彩空间和独特颜色的数量:

read w h c u < <(identify -format "%w %h %[colorspace] %k" filename.jpg)
于 2012-02-09T09:31:16.900 回答
0

使用带有多个分隔符(空格和 x)的 awk 应该可以

如果反引号不起作用,您可以尝试使用 w = $(.....)。

w = `awk -F" |x" '{print $3}'`
h = `awk -F" |x" '{print $4}'`

您需要通过将其预先存储在文件中并将其传入或包含调用来适应上述标识命令的输出。

于 2012-02-09T09:22:08.440 回答