0

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

更新

我已经弄清楚了语法并将其发布为答案。

4

2 回答 2

1

祝乔好运;我建议更改为允许您使用 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 标签,因为这是您想要使用的?

于 2012-11-26T22:17:13.090 回答
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);
于 2012-11-27T00:54:32.843 回答