我想使用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.';
}
}
?>
这是输入图像
这是我得到的图像......
这是我想要
的图片答案 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');
?>