我从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
?
standard Exif tags未列出ImageSize
。
答案 0 :(得分:0)
如ghoti所建议的那样,解析输出有效:
exiv2 image.jpg | grep "Image size" | sed -n "s/^.*Image size\s*:\s\([0-9]*\)\sx\s\([0-9]*\).*$/\1/p"
给出宽度,然后
exiv2 lowerCircle_0100.jpg | grep "Image size" | sed -n "s/^.*Image size\s*:\s\([0-9]*\)\sx\s\([0-9]*\).*$/\2/p"
高度。
尽管如此,我仍然希望得到一个更干净的答案。
sed命令的说明:
sed -n "s/^.*Image size\s*:\s\([0-9].*\)\sx\s\([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
\sx\s 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
答案 1 :(得分:0)
或没有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 ' '