如何在不使用ImageMagick的情况下使用颜色混合模式进行颜色叠加等功能

时间:2014-07-02 08:01:40

标签: php image-processing gd

我想使用php操作图像,其结果类似于photoshop中的颜色混合模式。我希望你能帮助我。

我有这段代码,但它会返回一个类似于屏幕混合模式的图像。

<?php
$img="text.png";
$to="";
$bool="";
$imres=$img;

if(isset($_POST['submit'])){
    $im = imagecreatefrompng('text.png');
    // $from=$_POST['oldhex'];

    $to=$_POST['newhex'];
    //conversion of hex to rgb values

    // Get width and height
    // $w = imagesx($im); 
    // $h = imagesy($im);
    // $im= imagecreatetruecolor($w,$h);



    ![enter image description here][1]$r = hexdec(substr($to, 0, 2));
    $g = hexdec(substr($to, 2, 2));
    $b = hexdec(substr($to, 4, 2));
    /* R, G, B, so 0, 255, 0 is green */

    if($im && imagefilter($im, IMG_FILTER_COLORIZE, $r, $g, $b,30)&& imagealphablending($im, true)){// echo 'Image successfully shaded';


        imagepng($im, '5.png');
        $bool="true";
        $imres="5.png";
    }
    else{
        echo 'shading failed.';
    }
}
?>

这是输入图像

enter image description here

这是我得到的图像......

failed image

这是我想要enter image description here

的图片

1 个答案:

答案 0 :(得分:0)

我已经尝试了这个并且得到了与你想要的相似的东西 - 也许它会给你一些进一步实验的想法。基本上我创建了与你的相同尺寸的另一个图像,并用颜色清洗和透明度填充它然后混合它们。

#!/usr/bin/php
<?php

    $im = imagecreatefrompng('text.png');

    $to='FFCC33';
    //conversion of hex to rgb values

    $r = hexdec(substr($to, 0, 2));
    $g = hexdec(substr($to, 2, 2));
    $b = hexdec(substr($to, 4, 2));

    $wash=imagecreatetruecolor(225,225);
    $col = imagecolorallocatealpha($wash,$r,$g,$b,70);
    imagefill($wash,0,0,$col);

    imagelayereffect($im,IMG_EFFECT_ALPHABLEND);
    imagecopy($im,$wash,0,0,0,0,225,225);
    imagepng($im,'5.png');
?>