A) Чтобы ответить на вопрос в вашем заголовке (который может привести других читателей здесь):
Сборки 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
.
B) Чтобы исправить проблему с вашим кодом:
- Конструктор 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' >";
?>
Он должен показывать версию файла изображения в градациях серого.