2016-04-25 9 views
1

Я не могу использовать Imagick в PHP для создания образов. Все функции присутствуют, но функции, которые заполняют объект Imagick, не имеют эффекта. Посмотрите на следующий фрагмент кода:Imagick в PHP не создает изображения

<?php 
    $img = new Imagick(); 
    $img->newImage(100, 80, new ImagickPixel("red")); 
    var_dump($img); 
?> 

Выход:

object(Imagick)#1 (0) { 
} 

И выход var_dump($img->getSize()) является:

Array 
(
    [columns] => 0 
    [rows] => 0 
) 

Так дело в том, что все эти изображения создания функции I такие как newImage($x, $y, $color), readImage($filename) и т. д. не имеют никакого эффекта, хотя они утверждают, что были успешными, возвращая true. Кажется, что выход ошибки не сообщает об ошибках. Все отлично работает в GD, но сейчас я хочу переключиться на Imagick, потому что у GD нет функциональности.

Итак, в чем дело? Забыл ли я задать переменную окружения, вызвать функцию подготовки или просто неправильно понял, как использовать Imagick в PHP?

+0

ли установлен модуль Imagick? Это не в установке PHP по умолчанию. – Daan

+0

Все функции Imagick определены, поэтому он, вероятно, установлен. – Rapti

+0

Пожалуйста, прочтите следующее: http://php.net/manual/en/imagick.installation.php – Daan

ответ

1

Использование новых функций PseudoImage.

<?php 

$img = new Imagick(); 
$img->newPseudoImage(100, 80, "xc:red"); 
$img->setImageFormat('png'); 

var_dump($img->getSize()); 

echo $img->getImageBlob(); 

Я понятия не имею, почему новый образ не работает - я открыл проблему для него, так как ваш код не работает не является интуитивным https://github.com/mkoppanen/imagick/issues/148

+0

Вау, 'newPseudoImage' действительно работает. Тем не менее, я действительно хочу загрузить изображение из файла, хотя я не совсем ясно сказал об этом. Любая идея о том, как это сделать? – Rapti

+0

Это стало совсем странно. Оказывает, что все функции теперь работают в моем тестовом файле, включая 'newImage', но они не находятся в моем фактическом файле, даже если они находятся в одной папке на том же компьютере. Я не понимаю. – Rapti

+0

Оказывается, что изображение загружается в обоих файлах, но 'getSize' работает только на псевдо-изображениях. Я этого не заметил, потому что я не выводил файл (пока), а просто пытался получить его размеры. Почему это не работает? По крайней мере, я могу использовать GD в качестве обходного пути, хотя было бы неэффективно загружать изображение дважды. – Rapti