我需要将一些.png格式的自定义图标转换为.svg格式,并且不想为此使用在线转换器。
我在网上找不到开箱即用的解决方案,所以我用我能找到的东西创建了自己的解决方案。
出于好奇心和学习意愿,以及可能服务于其他人的需要,试图完成同样的任务,我在这里上传它作为我的第一篇文章。
我对图像格式的知识充其量是最低限度的。我对shell脚本的了解还处于初级阶段。我的编码知识总体上是爱好水平。
I希望任何评论都能帮助:
My当前工作设置:
function png_to_svg() {
### First use convert to convert to .pnm format ###
number_of_dots_in_filepath=$(echo "$1" | grep -o "\." | wc -l)
pnm_filepath=""
for i in $(seq 1 $number_of_dots_in_filepath); do
pnm_filepath="$pnm_filepath.$(echo "$1" | cut -f $i -d '.')"
done
remove_leading_space=${pnm_filepath#?}
pnm_filepath="$remove_leading_space.pnm"
command="convert \"$1\" \"$pnm_filepath\""
eval "$command"
### Second use potrace to convert .pnm to .svg file ###
svg_filepath="$remove_leading_space.svg"
command="potrace \"$pnm_filepath\" -s -o \"$svg_filepath\""
eval "$final_command"
### Third and last: remove temporary .pnm file ###
eval "rm \"$pnm_filepath\""
}第一次回复后的Edited设置:
function png_to_svg() {
### First use convert to convert to .pnm format ###
pnm_filepath=${1%.*}.pnm
convert "$1" "$pnm_filepath"
### Second use potrace to convert .pnm to .svg file ###
svg_filepath=${1%.*}.svg
potrace "$pnm_filepath" -s -o "$svg_filepath"
### Third and last: remove temporary .pnm file ###
rm "$pnm_filepath"
}发布于 2018-10-27 16:55:49
你不需要eval。例如,
eval "rm \"$pnm_filepath\""是相同的
rm "$pnm_filepath"但后者的可读性更强。
对于使用eval的其他两种情况也是如此。
我不知道在文件路径中循环点的目的是什么。请注意,目录名也可以有点。获得具有不同扩展名的文件名的最佳方法是使用${x%.*} (参见这里):
pnm_filepath=${1%.*}.pnm(我猜你用的是Bash)。
https://codereview.stackexchange.com/questions/206376
复制相似问题