Ошибка 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 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
кружок ' @ 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
кружок ' @ 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"