我需要调整图像大小和清除exif数据,但是从源图像big.jpg
输出exif数据,并输出small.jpg
的变换图像大小。
那不输出exif数据:
gm convert big.jpg -format "%w %h %[exif:DateTime]" -strip -resize "250x250>" -write small.jpg info:-
不输出变换后的图像尺寸(small.jpg):
gm convert big.jpg -format "%w %h %[exif:DateTime]" -write info:- -strip -resize "250x250>" small.jpg
如何正确完成? 感谢。
答案 0 :(得分:0)
我有两个解决方案 - 一个是丑陋的,一个是非常难看的! : - )
第一个提取EXIF数据,将其写入stderr
,使其不通过管道,然后管道图像(内部MIFF => Magick图像文件格式)进入第二个convert
进行调整大小并打印调整大小的大小:
gm convert big.jpg -format "%[exif:DateTime]" -write info:/dev/fd/2 miff:- | gm convert miff:- -strip -resize "250x250>" -format "%w %h" -write info:- small.jpg
2017:04:06 09:12:02
250 107
第二种方法可能更有效,因为它只加载原始图像一次并将其存储在两个处理步骤之间的MPR( Magick持久寄存器)中。这两个步骤在单个GraphicsMagick batch
进程中运行:
cat - <<EOF | gm batch -prompt off
convert big.jpg -write mpr:orig -format "%[exif:DateTime]" info:-
convert mpr:orig -strip -resize "250x250>" -format "%w %h" -write small.jpg info:-
EOF
这两个都包含“bashisms”,因此您需要在bash
下运行它们。