我从blender创建图像,它们缺少Exif元数据,我使用bash命令添加exiv2
。(因为这些图像传递到的软件将使用元数据。
例如,我可以使用exiv2 -M"set Exif.Image.ImageWidth 960" image.jpg
将图像宽度设置为 960,然后使用exiv2 -g Exif.Image.ImageWidth -Pv image.jpg
将其读出。
为了快速总结,我可以exiv2 image.jpg
获取设置的 Exif 元数据列表。这包括
$ exiv2 image.jpg
File name : image.jpg
File size : 32975 Bytes
MIME type : image/jpeg
Image size : 960 x 540
如何使用此Image size
在 bash 中设置Exif.Image.ImageWidth
和Exif.Image.ImageLength
?
标准 Exif 标签未列出ImageSize
.
正如 ghoti 所建议的那样,解析输出有效:
exiv2 image.jpg | grep "Image size" | sed -n "s/^.*Image sizes*:s([0-9]*)sxs([0-9]*).*$/1/p"
给出宽度,并且
exiv2 lowerCircle_0100.jpg | grep "Image size" | sed -n "s/^.*Image sizes*:s([0-9]*)sxs([0-9]*).*$/2/p"
高度。
不过,我仍然希望得到一个更干净的答案。
sed 命令的说明:
sed -n "s/^.*Image sizes*:s([0-9].*)sxs([0-9]*).*$/1/p"
-n suppress printing
"s/ substitute match
^.* everything from the start
Image size until "Image size" is encountered
s*:s whitespace, colon, a single space
([0-9]*) any number of digits. store that in 1
sxs space x space
([0-9]*) another group of digits. store that in 2
.*$ everything until the end of line
/1 substitute all that with the first group
/p" and print the substituted result
或没有 sed 象形文字
exiv2 pr X.jpg | awk -F: '/Image size/ {print $2}' | cut -dx -f1 | tr -d ' '
和
exiv2 pr X.jpg | awk -F: '/Image size/ {print $2}' | cut -dx -f2 | tr -d ' '