Ответ 1
brew remove imagemagick //to delete current version
brew install imagemagick --build-from-source
исправил это для меня на Mac
Проблема: ImageMagick конвертировать не может обрезать изображение. Похоже, он не распознает тип изображения?
Что я пробовал:
Я искал в Интернете, и я видел несколько подобных проблем, но не моя. Я пытался их решения, включая
Я работаю на Mac OSX El Capitan и все остальное в терминале работает нормально. ImageMagick уже был установлен.
Когда я бегу:
$ convert /Users/Innovate/Desktop/crop/2015-04-26-GinaDate13_487.png 805X972+34+94 /Users/Innovate/Desktop/crop/2015-04-26-GinaDate13_487-cropped.png
Я получил:
конвертировать: невозможно открыть изображение '805X972 + 34 + 94': нет такого файла или каталога @error/blob.c/OpenBlob/2702.
convert: нет делегата декодирования для этого формата изображения '' @error/constitute.c/ReadImage/504.
нет делегата декодирования для этого формата изображения '' @error/constitute.c/ReadImage/504
В других постах по этому вопросу люди получают
преобразовать делегата без декодирования для этого формата изображения 'PNG'
Или аналогичные (за исключением их типа изображения или имени файла и типа изображения)
Тем не менее, мой ничего не говорит о типе файла изображения...
Я не пытался удалить ImageMagick, а затем установить его вручную из источников, потому что я не очень уверен в этом... (было показано это решение: qaru.site/info/1250339/...)
Кто-нибудь знает, что может происходить?
Кроме того, кто-нибудь может помочь мне интерпретировать часть @error/constitute.c/ReadImage/504? Я смотрю на код для construct.c, но я не уверен, смогу ли я получить от него полезную информацию для решения моей проблемы (я немного знаю C)
Спасибо!
brew remove imagemagick //to delete current version
brew install imagemagick --build-from-source
исправил это для меня на Mac
Хорошо, играя вокруг, я выяснил решение, и я отправляю его здесь для других людей, которые могут столкнуться с этой проблемой:
По-видимому, это не /no больше/не для меня способ обрезать изображение с помощью ImageMagick convert. Несмотря на то, что это использование показано здесь, это не сработало для меня, используя El Capitan (возможно, это ОС?).
Вместо использования
конвертировать img.png 805X972 + 34 + 94 img-crop.png
Правильная команда, которая работает:
convert image.png -crop 805X972 + 34 + 94 image-crop.png
То есть команда:
convert image.ext -crop heightXwidth + positionX + positionY * imagecropped.ext
Подробнее можно найти здесь. Из описания на этой странице ImageMagick меня смутило пример, когда они конвертировали rose: -crop, но вы можете просто использовать его так, как я упоминал выше, и он отлично работает.
Бросание в мои два цента, поскольку я тоже боролся с этой проблемой в течение последних нескольких дней. У меня не было проблем с выполнением команд ImageMagick на моей локальной машине, но получено сообщение об ошибке, как упоминалось в OP, когда я запускал команду с сервера Tomcat, работающего на Azure Cloud.
Я мог бы определить причину, выполнив следующую команду:
convert -list format
На моей локальной машине он вернет довольно длинный список всех поддерживаемых форматов, тогда как на Kudu (инструмент CLI Azure) он вернет пустой результат. Это означает, что ImageMagick не нашел путь к своим DLL файлам, необходимым для обработки.
В моем случае проблема была просто вызвана отсутствием конфигурации на Azure:
ПРИМЕЧАНИЕ. Для людей, которые также испытывают эту проблему на Azure, вы можете посмотреть этот ответ SO, в котором объясняется, как добавить переменную среды с помощью XDT Transform.
Я получал ту же ошибку за отсутствие некоторых одинарных кавычек.
При объединении изображений с convert -draw с кавычками предоставленное изображение должно быть заключено в кавычки.
Дефрагментатор декодирования для этого формата изображения `` @error/составляют .c/ReadImage/504
convert myBackground.png -font Arial -pointsize 20 \
-draw "gravity west image Over 50,80,20,20 'myForeground.png'" \
# -----------------------------------------^ added missing single quotes
-flatten ./finalImage.jpg
Когда я добавил в одинарные кавычки вокруг myForeground
, проблема исчезла. Какая паршивая ошибка!
Альтернативная команда Imagemagick:
convert pic1-jpg.jpg[805x972+34+94] pic1-jpg-crop.jpg
или как указано ранее
convert pic1-jpg.jpg -crop 805x972+34+94 +repage pic1-jpg-crop.jpg
см. Inline Image Crop в https://www.imagemagick.org/script/command-line-processing.php
Как правило, я предпочитаю использовать x (нижний регистр), а не X (верхний регистр) между шириной и высотой, для удобства чтения. Но либо работает.
Мне также пришлось бороться с этой проблемой сегодня в операции преобразования, которая применяла другой профиль цветового пространства.
Кажется, команда imagick convert чувствительна к расширению имени файла профиля. В моем случае это был временный файл без суффикса, который вызывал то же сообщение об ошибке из заголовка вопроса.
convert infile.jpg -profile /tmp/profile-without-suffix outfile.jpg
Добавление правильного суффикса к имени файла профиля устраняет проблему:
(при условии формата ICC)
convert infile.jpg -profile /tmp/profile-without-suffix.icc outfile.jpg
Для меня (на Macos Mojave, используя Imagick с CraftCMS) мне пришлось переустановить Imagick с помощью pecl uninstall imagick
и pecl install imagick
(а затем перезапустить Apache с помощью sudo apachectl -k restart
). Я, должно быть, запустил brew upgrade
и получил более новую версию ImageMagick, в результате которой Imagick NoDecodeDelegateForThisImageFormat 'JPEG' @error/constitute.c/ReadImage/556
похожую ошибку NoDecodeDelegateForThisImageFormat 'JPEG' @error/constitute.c/ReadImage/556
.