2017-02-15 18 views
1

Я обновил мою версию ImageMagick и ее привязки для PHP.ImageMagick: ImageCoderSignatureMismatch `miff '

Я установил ImageMagick-7.0.4-9-В16-x64, и php_imagick-3.4.3-7.0-NTS-vc14-x64, работает на PHP 7.0.10.

Командная строка, похоже, работает хорошо, так как мне удалось выполнить простой magick convert image.png -resize 50% imageSmall.png.

Проблема заключается в том, что скрипт PHP, который успешно работал на ImageMagick 6.8.x (я не очень хорошо помню), но не могу сделать это с этой версией.

Он дал мне следующую ошибку:

ImageCoderSignatureMismatch `miff': 210 != 610 @ error/module.c/OpenModule/1342 

Иногда он показывает мне Unable to set the image format вместо этого, я не знаю, почему.

Я нашел, где в моем коде была вызвана эта ошибка:

public function init(){ 
    var_dump('begin init fcrender canvas'); 
    if($this->_canvas == null){ 
     $this->_canvas = new Imagick(); 
     /////// It's the following line : 
     $this->_canvas->newImage($this->_width, $this->_height, 'transparent', 'miff'); 
     ///////////////////////////////// 
     $this->_filename = 'image'; 
     $this->_extension = 'png'; 
    } 
} 

Так почему же эта ошибка взялось? Спасибо вам за помощь! :)

+0

Привет, если ответ emcconville верен, вы должны увидеть предупреждающее сообщение, когда PHP загружает модуль Imagick. Вы этого не видите? Если вы не хотите, не могли бы вы сказать, как вы устанавливаете Imagick, поскольку мне нужно выяснить, почему эта ошибка не срабатывает. – Danack

+0

Предупреждение не отображается ни на экране, ни в журнале ошибок php. :/ Я установил Imagemagick с помощью двоичной версии Windows «ImageMagick-7.0.4-9-Q16-x64-dll.ехе»в C: \ imagemagick7_0_4 \ Я настроил вручную мои переменные окружения PATH содержит "C: \ imagemagick7_0_4 \", MAGICK_HOME и MAGICK_CODER_MODULE_PATH являются "C:. \ imagemagick7_0_4 \ модули \ кодеры \" Я проверил' Magick конвертировать afile.png -resize 50% afile-small.png' в командной строке, и он сработал. – Thaledric

ответ

0

Я думаю, что php_imagick просто не совместим с ImageMagick7.x.x.

Я скачал и установил ImageMagick6.9.3, что я нашел здесь:. http://windows.php.net/downloads/pecl/deps/

(Чтобы установить, я просто папка, в C:\imagemagick\ и поместить содержимое «Bin \» на верхнем уровне, в C:\imagemagick\ Затем я скопировал все CORE_RL _ * Dll в C:\wamp64\bin\apache\apache2.4.23\bin\)

Это отлично работает в PHP 7.0.10 с imagick3.4.3 загружаемое здесь:.. https://pecl.php.net/package/imagick

Благодарим вас за помощь, ребята!

+1

«Я думаю, что php_imagick просто не совместим с ImageMagick7.x.x« да, это так. Да, это https://travis-ci.org/mkoppanen/imagick/builds/202421469 Единственное, что вы не можете смешивать и сопоставлять версии Imagick с ImageMagick. https://github.com/mkoppanen/imagick#installing-on-windows «После компиляции Imagick должен запускаться с той же версией ImageMagick, что и скомпилирован. Работа с другой версией ImageMagick известна вызывают проблемы со стабильностью, и поэтому не рекомендуется и не поддерживается ». – Danack

1

Это означает, что был загружен неправильный модуль. 210 != 610 являются сигнатурой версии модуля miff, поэтому IM 7 ожидается miff 610, но загружен IM12 210.

Пара вариантов исправить.

  • Удалить все ресурсы ImageMagick 6.
  • Переустановите ImageMagick 7 в изолированное место и используйте переменную окружения $MAGICK_HOME.
  • Определить MAGICK_CODER_MODULE_PATH переменную окружения для исправления пути модуля.

Подробнее @Resources documentation.

+0

Я удалил существующее изображение ImageMagick на своем компьютере и установил новую копию ImageMagick 7.0.4 в месте, которое никогда не использовалось . Перед Итак, у меня есть три ENVIRONNEMENT переменные: - Path: "C: \ imagemagick7_0_4 \"? - MAGICK_HOME и MAGICK_CODER_MODULE_PATH: "C: \ imagemagick7_0_4 \ Modules \ кодеры \" Это право – Thaledric

+0

Первый вариант должен Другие два были бы предпочтительнее, если вы девело ping решение с обеих версий или нужно быстро переключаться между ними. – emcconville

+0

Хмммм, он не работает:/У меня такая же ошибка. – Thaledric