Ошибка Magick в Unix: несоответствующее определение примитива рисования `circle'

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 image111.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кружок ' @ error/draw.c/DrawImage/3158. convert.bin: определение несоответствующего чертежа примитива rectangle' @ error/draw.c/DrawImage/3158. convert.bin: unable to open image94.727,52.344': нет такого файла или каталога @ error/blob.c/OpenBlob/2638. convert.bin: нет делегата декодирования для этого формата изображения 94.727,52.344' @ error/constitute.c/ReadImage/544. convert.bin: unable to open image118.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кружок ' @ error/draw.c/DrawImage/3158. convert.bin: несоответствующее определение примитива рисования `rectangle' @ error/draw.c/DrawImage/3158.

В сценарии переменные X и Y содержат местоположение центра, относительно которого я хочу нарисовать круг и прямоугольник. В приведенном выше случае Х =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 ответ

Я бы порекомендовал преобразовать $x и $Y в целые числа в верхней части скрипта перед вызовом draw, как это:

# 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"
Другие вопросы по тегам