Переход от команды convert к прямому PHP для ImageMagick

Я переезжаю в новую хостинговую компанию, которая не позволит мне выполнить команду convert для ImageMagick. Так что теперь мне нужно попытаться сделать это через прямой PHP. Я потратил довольно много времени, пытаясь понять это, и везде, где я смотрю, люди рекомендуют использовать команду convert, как и я. Я был бы признателен за любую помощь или руководство по написанию следующих команд на чистом PHP.

# Applies overlay $filter_image to the original $image
convert $image ( -clone 0 -alpha off $filter_image -compose SoftLight -composite ) -compose SrcIn -composite $output_image

а также

# Apply a blur to an image
convert $image -blur 0x$blur_radius $output_image

ОБНОВЛЕНИЕ:

Я понял синтаксис и опубликовал его как ответ.


person Joe Workman    schedule 26.11.2012    source источник
comment
Если они позволяют вам выполнять perl или python или просто базовые двоичные файлы в вашей учетной записи пользователя, вы можете вызвать их из php.   -  person James McDonnell    schedule 27.11.2012
comment
Мне вообще не разрешают запускать exec. Вот почему я хотел бы сделать все это с помощью PHP-модуля ImageMagick.   -  person Joe Workman    schedule 27.11.2012


Ответы (2)


Желаем удачи, Джо; Я бы порекомендовал перейти на хост, который позволит вам использовать exec.

У меня есть несколько примеров функций imagick на моем сайте, с которыми вы можете что-то собрать: http://www.rubblewebs.co.uk/imagick/functions/function.php

Я только что заметил, что разместил код Imagemagick, а не код Imagick! Это, как вы теперь знаете, код размытия для Imagick:

bool blurImage (float $radius, float $sigma [, int $channel])

<?php  
$im = new Imagick($input); 
$im->blurImage( 0, 3 ); 
$im->writeImage('blurImage.jpg');  
$im->destroy(); 
?> 

Может быть, стоит добавить тег Imagick к вашему сообщению, поскольку вы хотите использовать его?

person Bonzo    schedule 26.11.2012

Я, наконец, понял это самостоятельно. Вот решение на случай, если кто-то еще столкнется с этим.

Размыть изображение...

$imagick = new Imagick($image);
$imagick->blurImage(0,$blur_radius);
$imagick->writeImage($output_image);

Добавить наложение к изображению...

$imagick = new Imagick($image);
$overlay = new Imagick($filter_image);

$imagick->compositeImage($overlay, imagick::COMPOSITE_SOFTLIGHT, 0, 0);
$imagick->writeImage($output_image);

Вы также можете легко комбинировать два метода и размыть изображение, а затем добавить к нему составное наложение.

$imagick = new Imagick($image);
$imagick->blurImage(0,$blur_radius);

$overlay = new Imagick($filter_image);
$imagick->compositeImage($overlay, imagick::COMPOSITE_SOFTLIGHT, 0, 0);

$imagick->writeImage($output_image);
person Joe Workman    schedule 27.11.2012