Как установить расширение gmagick PHP на Windows Vista
gmagick - более новая версия imagemagick с большим набором функций, она менее ресурсоемкая и быстрая, но проблема в том, что об этом замечательном инструменте в Интернете очень мало дискуссий, с которыми я недавно сталкивался на http://devzone.zend.com/1559/manipulating-images-with-php-and-graphicsmagick/, но я не смог установить его на Windows-машины, потому что phpize не работал, поэтому я попытался каким-то другим способом и каким-то образом удалось попасть на страницу phpinfo, но я не мог заставить его работать дальше я не знаю, даже не открыть ни одного изображения с помощью gmagick, это код, который я использовал
<?php
$path="gallery/img1.jpg";
// initialize object
$image = new Gmagick($path);
echo $image;
// read image file
$file = 'gallery/img1.jpg';
$image->readImage($file);
echo '<img src="' . $file . '" width="200" height="150" /> <br/>';
?>
Я использовал этот код для создания экземпляра класса gmagick и открытия изображения, но я получаю очень большую ошибку, как показано ниже. Неустранимая ошибка: необработанное исключение "GmagickException" с сообщением "Невозможно открыть файл (gallery/img1.jpg)" в C:\xampp\htdocs\junk\imgproc\imgproc1.php:4 Трассировка стека: #0 C:\xampp\htdocs\junk\imgproc\imgproc1.php(4): конструкция Gmagick->__ ('gallery/img1.jp...') #1 {main} в C: \ xampp \ htdocs \ junk \ imgproc \ imgproc1.php в строке 4
1 ответ
А) Чтобы ответить на вопрос в вашем заголовке (это может привести других читателей здесь):
Сборки Windows расширения GraphicsMagick для PHP можно получить здесь: http://valokuva.org/builds/
Проверьте, нужна ли вам поточно-ориентированная версия или нет, посмотрев на phpinfo();
вывод вашего веб-сервера. Ищите запись Thread Safety
, В записи PHP Extension Build
Вы также должны найти нужную версию VC, например, API20090626,TS,VC9
для VC9.
Загрузите последнюю сборку, соответствующую вашим условиям, поместите ее в каталог PHP/ext и добавьте в свой php.ini следующим образом:
extension=php_gmagick_ts.dll
Не забудьте исправить имя DLL, если вы используете версию не-TS.
Перезапустите Apache и проверьте phpinfo();
, Там должно быть gmagick
блокировать сейчас..
Б) Чтобы исправить проблему с вашим кодом:
- Конструктор Gmagick не ожидает путь в качестве параметра, но полное имя файла изображения (может включать путь). Чаще всего лучше оставить его пустым и предоставить файл в
readImage()
вызов. - Попробуйте полный путь $ (начиная с корня) и используйте его в
readImage()
а такжеwriteImage()
:
Вот пример рабочего фрагмента кода:
<?php
// assuming this is the path to your code and to your image files
$path = 'C:\xampp\htdocs\junk\imgproc\';
$image = new Gmagick();
$file = 'img1.jpg';
$image->readImage($path.$file);
// The rest of your code does not make any use of the GM instance,
// so I add something functional here: create a grayscale version and show it
$fileOut= 'img1_GRAY.jpg';
$image->setImageType(Gmagick::IMGTYPE_GRAYSCALE);
$image->writeImage($path.$fileOut);
$image->destroy();
echo "<img src='$fileOut' >";
?>
Он должен показывать версию изображения в градациях серого.