从转换命令转移到ImageMagick的直接PHP

时间:2012-11-26 20:29:00

标签: php imagemagick imagick imagemagick-convert

我正在搬到一家新的托管公司,不允许我为ImageMagick执行convert命令。所以我现在必须尝试通过直接的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

更新

我已经找到了语法并将其作为答案发布。

2 个答案:

答案 0 :(得分:1)

祝你好运乔;我建议改为让你使用exec的主机。

我在我的网站上有一些想象功能的例子,你可以将这些功能拼凑在一起: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标签,因为这是你想要使用的?

答案 1 :(得分:0)

我终于自己想出来了。以下是其他人遇到此问题的解决方案。

模糊图像......

$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);