bash管道中的转换不能按预期工作

时间:2018-02-07 10:35:03

标签: bash imagemagick-convert

不确定这是转换问题还是bash,因为我在其他bash脚本中没有看到类似的问题。

核心脚本如下。 $ text是"(img,white30.png,0,0,30,30 img,white30.png,560,320,30,30 3℃img,iconall.png,0,0,24,24 img, iconall.png,200,0,24,24'< 3级')"。结果应该是$ color-ed圆角,用"图像图像3℃图像图像< 3级" (没有空间)就可以了。

如果我手动执行逻辑,一切都很好。但是当我使用-x运行脚本时,我得到了一个令人困惑的命令序列(参见问题的最后部分)和结果图片(3℃部分只是空白,并且看起来正确的位置)。

convert -size "${w}x${h}" canvas:transparent -fill "${color}" -draw "roundrectangle 0,0,${w},${h},15,15" "PNG32:${iPic}"

local x=0
for i in "${text[@]}"; do
    if [[ "${i}" == img,* ]]; then
        IFS=, read -r img filename x1 y1 w1 h1 <<< "${i}"
        convert "${filename}" -crop "${w1}x${h1}+${x1}+${y1}" - |
        convert "${iPic}" - -gravity northwest -geometry "+${x}+$(( (h - h1) / 2 ))" -composite "${oPic}"
    else
        local wxh
        wxh="$(textSize "${i}")"
        w1="$(cut -dx -f1 <<< "${wxh}")"
        convert -size "${w}x${h}" canvas:black -fill white -draw "roundrectangle 0,0,${w},${h},15,15" PNG32:- |
        convert - canvas:white -fill black -pointsize 40 -font Noto-Sans-Mono-CJK-SC-Regular -gravity northwest -annotate "+${x}+0" "${i}" PNG32:- |
        convert "${iPic}" - -alpha Off -compose CopyOpacity -composite "${oPic}"
    fi
    x=$(( x + w1 ))
    cp -f "${oPic}" "${iPic}"
done
convert "${src}" "${oPic}" -gravity "${gravity}" -geometry "${position}" -composite "${dest}"

bash -x输出(只调用转换):

+++ convert -debug annotate xc: -font Noto-Sans-Mono-CJK-SC-Regular -pointsize 40 -annotate 0 3℃ null:
+++ convert -debug annotate xc: -font Noto-Sans-Mono-CJK-SC-Regular -pointsize 40 -annotate 0 '<3级' null:
+ convert -size 254x59 canvas:transparent -fill '#8fa6bc' -draw 'roundrectangle 0,0,254,59,15,15' PNG32:/tmp/tmp.zBBu2pNx1h
+ convert white30.png -crop 30x30+0+0 -
+ convert /tmp/tmp.zBBu2pNx1h - -gravity northwest -geometry +0+14 -composite /tmp/tmp.lPXXH4jNsW
+ convert white30.png -crop 30x30+560+320 -
+ convert /tmp/tmp.zBBu2pNx1h - -gravity northwest -geometry +30+14 -composite /tmp/tmp.lPXXH4jNsW
+++ convert -debug annotate xc: -font Noto-Sans-Mono-CJK-SC-Regular -pointsize 40 -annotate 0 3℃ null:
+ convert -size 254x59 canvas:black -fill white -draw 'roundrectangle 0,0,254,59,15,15' PNG32:-
+ convert - canvas:white -fill black -pointsize 40 -font Noto-Sans-Mono-CJK-SC-Regular -gravity northwest -annotate +60+0 3℃ PNG32:-
+ convert /tmp/tmp.zBBu2pNx1h - -alpha Off -compose CopyOpacity -composite /tmp/tmp.lPXXH4jNsW
+ convert iconall.png -crop 24x24+0+0 -
+ convert /tmp/tmp.zBBu2pNx1h - -gravity northwest -geometry +122+17 -composite /tmp/tmp.lPXXH4jNsW
+ convert iconall.png -crop 24x24+200+0 -
+ convert /tmp/tmp.zBBu2pNx1h - -gravity northwest -geometry +146+17 -composite /tmp/tmp.lPXXH4jNsW
+++ convert -debug annotate xc: -font Noto-Sans-Mono-CJK-SC-Regular -pointsize 40 -annotate 0 '<3级' null:
+ convert -size 254x59 canvas:black -fill white -draw 'roundrectangle 0,0,254,59,15,15' PNG32:-
+ convert - canvas:white -fill black -pointsize 40 -font Noto-Sans-Mono-CJK-SC-Regular -gravity northwest -annotate +170+0 '<3级' PNG32:-
+ convert /tmp/tmp.zBBu2pNx1h - -alpha Off -compose CopyOpacity -composite /tmp/tmp.lPXXH4jNsW
+ convert - /tmp/tmp.lPXXH4jNsW -gravity southeast -geometry +0+300 -composite -

0 个答案:

没有答案