将 imagemagick ColorDodge 函数转换为 imagick

Convert imagemagick ColorDodge function to 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

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

compositeImage 使用预定义常量 imagick::COMPOSITE_COLORDODGE

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

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

在PHP中,你可以这样做,用这个作为1.jpg

棋盘为2.jpg

#!/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');
?>