Unix中的Image Magick错误:不符合图形的原始定义`circle'

时间:2015-02-18 05:27:04

标签: unix command-line imagemagick imagemagick-convert

convert -quiet 2B_IMAGES/1001005_2_53990/01_03DEC22_S01005_0004_cutout_1209.fits 
-level 4.92401123047%,5.47628846705% -negate -fill transparent -stroke green 
-draw "circle $X,$Y `echo $X+5|bc`,$Y" -stroke black 
-draw "rectangle `echo $X-12|bc`,`echo $Y-12|bc` `echo $X+12|bc`,`echo $Y+12|bc`" 
-crop 50x50+`echo $X-25|bc`+`echo $Y-25|bc`\! -background transparent 
-flatten +repage 2B_IMAGES/1001005_2_53990/out.png;

以上脚本在macOSX中完美运行。但是当我尝试在unix服务器上运行它时,我收到以下错误:

convert.bin:不符合图形原语定义circle' @ error/draw.c/DrawImage/3158. convert.bin: unable to open image'106.727','64.344'':没有这样的文件或目录@ error / blob.c / OpenBlob / 2638。 convert.bin:此图像格式没有解码委托'106.727','64.344'' @ error/constitute.c/ReadImage/544. convert.bin: unable to open image 111.727,'64 .344'':没有这样的文件或目录@ error / blob.c / OpenBlob / 2638。 convert.bin:此图像格式没有解码委托111.727,'64.344'' @ error/constitute.c/ReadImage/544. convert.bin: non-conforming drawing primitive definition circle'@ error / draw.c / DrawImage / 3158。 convert.bin:不符合图形原语定义rectangle' @ error/draw.c/DrawImage/3158. convert.bin: unable to open image 94.727,52.344':没有这样的文件或目录@ error / blob.c / OpenBlob / 2638。 convert.bin:此图像格式没有解码委托94.727,52.344' @ error/constitute.c/ReadImage/544. convert.bin: unable to open image 118.727,76.344':没有这样的文件或目录@ error / blob.c / OpenBlob / 2638。 convert.bin:此图像格式没有解码委托118.727,76.344' @ error/constitute.c/ReadImage/544. convert.bin: non-conforming drawing primitive definition circle'@ error / draw.c / DrawImage / 3158。 convert.bin:不符合图形的原始定义`rectangle'@ error / draw.c / DrawImage / 3158。

在脚本中,变量X和Y包含我想要绘制圆形和矩形的中心位置。在上述情况下,X = 106.727,Y = 64.344。 输入图像的路径为:' 2B_IMAGES / 1001005_2_53990 / 01_03DEC22_S01005_0004_cutout_1209.fits ' 输出路径为 2B_IMAGES / 1001005_2_53990 / out.png

我尝试在线查找答案,但无法解决问题。我仍然遇到同样的错误。有人可以告诉我我需要在脚本中进行的更改才能使其正常工作。

1 个答案:

答案 0 :(得分:0)

我建议在调用draw之前将$ x和$ Y转换为脚本顶部附近的整数,如下所示:

# Round $X to nearest int
X=$(echo "($X+0.5)/1" | bc)

# Round Y to nearest int
Y=$(echo "($Y+0.5)/1" | bc)

此外,请检查您是否支持FITS图片

identify -list format | grep -Ei "fit|Flex"