regex - 从识别命令解析图像大小

标签 regex linux bash identify

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

my_image.png PNG 154x78 154x78+0+0 8-bit 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 是什么

谢谢

最佳答案

这是一个很难编写正则表达式的情况,因为我们不知道文件名是否包含空格或是否有扩展名。使用 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 just 表示从 0 开始在 x 上轴,和 0y 上轴。您可以阅读更多 in the imagemagick manual .

由 Mark Setchell 编辑

前面的答案非常好,我不想添加竞争性答案,只是澄清一下,或者小的改进,这对评论来说太大了......

由于 OP 正在使用 bash ,他可以一次性获取宽高,不需要多次打开图片,像这样:

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

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

read w h c u < <(identify -format "%w %h %[colorspace] %k" filename.jpg)

关于regex - 从识别命令解析图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9207965/

相关文章:

c# - String.Replace 和 Regex.Replace 不适用于 IComparer 中的特殊字符

java - 使用正则表达式将字符串大写

linux - Apache 目录工作室的 Openldap 命名上下文问题?

c# - 适用于 Windows 和 Linux 的同一台机器上的套接字

linux - 从 linux 命令行搜索我保存的命令(不是 bash 历史)的工具/脚本

beagle board 交叉编译错误。 bash 错误是什么?

最后一组中字符串的最后一个匹配的正则表达式

javascript - 在 PEG.js 中测试所有替代模式

linux - linux在哪里开启虚拟内存?

linux - 我可以在 Windows 中用什么程序编写 .sh 文件