$ file myImage.png
产生这个结果:
myImage.png: PNG image data, 42 x 64, 8-bit grayscale, non-interlaced
我想将宽度和高度解析为变量,如下所示:
MY_WIDTH = file myImage.png | grep ???x
MY_HEIGHT = file myImage.png | grep x???
答案 0 :(得分:5)
您可以使用正则表达式匹配的子组捕获:
regex='([0-9]+) x ([0-9]+)'
[[ $(file myImage.png) =~ $regex ]] && {
MY_WIDTH=${BASH_REMATCH[1]}
MY_HEIGHT=${BASH_REMATCH[2]}
}
答案 1 :(得分:4)
如果您确实对图像的分辨率感兴趣,那么file包中的实用程序比imagemagick更好。特别是identify工具:
MY_WIDTH=$(identify -format "%w" myImage.png)
MY_HEIGHT=$(identify -format "%h" myImage.png)
答案 2 :(得分:0)
我相信你需要一个正则表达式,用两边的数字检测'x'模式。
This thread may help you start正如它所说:
xrandr|grep -Po '\d+(?=\s*x.*\*.*)'
而你可以做
RES = file myImage.png ||grep -Po '\d+(?=\s*x.*\*.*)'
然后相应地修改以将两者分成变量