Как установить расширение gmagick PHP на Windows Vista - PullRequest
0 голосов
/ 27 декабря 2011

gmagick - более новая версия imagemagick с большим набором функций, она менее ресурсоемкая и быстрая, но проблема в том, что об этом замечательном инструменте в сети очень мало обсуждается, я недавно сталкивался с этим http://devzone.zend.com/1559/manipulating-images-with-php-and-graphicsmagick/ но я не смог установить его на машины с Windows, потому что phpize не работал, поэтому я попытался каким-то другим способом и каким-то образом удалось попасть на страницу phpinfo, но я не мог заставить его работать дальше. это код, который я использовал

     <?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 -> __ construct ('gallery / img1.jp ...') # 1 {main}, брошенный в C: \ xampp \ htdocs \ junk \ imgproc \ imgproc1.php по линии 4

1 Ответ

3 голосов
/ 18 сентября 2012

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) Чтобы исправить проблему с вашим кодом:

  1. Конструктор Gmagick не ожидает путьв качестве параметра, но полное имя файла изображения (может включать путь).Чаще всего лучше оставить его пустым и указать файл в вызове readImage().
  2. Попробуйте полный путь $ (начиная с корня) и используйте его в 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' >";
?>

Он должен показывать версию файла изображения в градациях серого.

...