我使用ImageMagick并需要对图像进行条件调整。
为此,我将identify
工具的结果存储到变量中。
$infile='test.jpg'
width=$(identify -ping -format %w $infile)
height=$(identify -ping -format %h $infile)
但在调整大小之前,我想进行一些改变图像大小的转换:-trim
和-shave
。所以我需要在修剪和调整大小之间计算图像大小。而且我只想进行一次修剪操作以进行一些优化。
所以,我想:
$data
)$data
变量值作为输入传递给identify
工具并存储其结果以进行条件调整大小$data
传递给convert
工具并完成处理这样的事情:
data=$(convert logo: -shave 1x1 gif:-)
width=$(echo $data | identify -ping -format %w gif:-)
echo $data | convert -resize "$width"
但echo
无法正常运作。
P上。 S. convert
和identify
是tools from ImageMagick suite
答案 0 :(得分:5)
Bash无法存储可能包含NULL
终止字符的数据blob。但您可以将数据转换为base64,并使用ImageMagick的fd:
协议。
# Store base64-ed image in `data'
data=$(convert logo: -shave 1x1 gif:- | base64)
# Pass ASCII data through decoding, and pipe to stdin file descriptor
width=$(base64 --decode <<< $data | identify -ping -format %w fd:0)
base64 --decode <<< $data | convert -resize "$width" -