将imagemagick ColorDodge函数转换为imagick

时间:2016-01-28 13:19:38

标签: php imagemagick imagick

我试图了解如何使用PHP ImageMagick library在2张图片上应用此过滤器:

convert 1.jpg \( -size 2816x1584 tile:2.jpg  \) -compose ColorDodge -composite out.jpg

如何在不使用EXEC / SYSTEM的情况下使用ImageMagick PHP扩展来实现? http://php.net/manual/en/book.imagick.php

2 个答案:

答案 0 :(得分:1)

请注意,您的命令行版本有点笨拙,因为它要求您对图像大小进行硬编码。我认为最好克隆原始图像(因此克隆大小相同),然后用模式填充克隆,而不是明确说明大小,创建画布并填充它:

convert 1.jpg \( +clone  -fill pattern:checkerboard -draw "color 0,0 reset" \) -compose colorDodge -composite result.png

在PHP中,您可以这样做,将其用作1.jpg

enter image description here

并将棋盘格设为2.jpg

enter image description here

#!/usr/local/bin/php -f
<?php
    $img1 = new Imagick("1.jpg"); 
    $img2 = clone $img1;
    $texture = new Imagick("2.jpg");
    $img3 = $img2->textureImage($texture);
    $img1->compositeImage($img3, Imagick::COMPOSITE_COLORDODGE, 0, 0);
    $img1->writeImage('result.jpg');
?>

enter image description here

答案 1 :(得分:-1)

我无法测试这个,因为我目前没有安装Imagick,但请查看:

使用prdefined常量imagick :: COMPOSITE_COLORDODGE

的compositeImage