掩盖图像

时间:2015-06-15 10:03:13

标签: php-gd

我想用掩码替换图像的透明像素,我使用此功能但我一直收到错误。

当我尝试:

<?php

function image_mask($src, $mask)
{


imagesavealpha($src, true);
imagealphablending($src, false);
// scan image pixels
// imagesx = get image width
for ($x = 0; $x < imagesx($src); $x++) {
    // imagesy = get image height
    for ($y = 0; $y < imagesy($src); $y++) {
        $mask_pix = imagecolorat($mask,$x,$y);
        //return r,g,b,alpha
        $mask_pix_color = imagecolorsforindex($mask, $mask_pix);
        if ($mask_pix_color['alpha'] < 127) {
            $src_pix = imagecolorat($src,$x,$y);
            $src_pix_array = imagecolorsforindex($src, $src_pix);
            imagesetpixel($src, $x, $y, imagecolorallocatealpha($src, $src_pix_array['red'], $src_pix_array['green'], $src_pix_array['blue'], 127 - $mask_pix_color['alpha']));
        }
    }
}

}
image_mask('source.png', 'mask.png');

?>

我收到以下错误:

Warning: imagesavealpha() expects parameter 1 to be resource, string given in ... on line 7

Warning: imagealphablending() expects parameter 1 to be resource, string given in ... on line 8

Warning: imagesx() expects parameter 1 to be resource, string given in ... on line 11

我尝试将imageCreateFromPngheader('Content-Type: image/png');添加到图片中,但之后我只得到一个空页。

2 个答案:

答案 0 :(得分:0)

我不知道你想要得到什么结果,我觉得页面显示是错误的。你可以尝试运行程序

<?php

header('Content-Type: image/png');

function image_mask(&$src, &$mask)
{

    imagesavealpha($src, true);
    imagealphablending($src, false);
    // scan image pixels
    // imagesx = get image width
    for ($x = 0; $x < imagesx($src); $x++) {
        // imagesy = get image height
        for ($y = 0; $y < imagesy($src); $y++) {
            $mask_pix = imagecolorat($mask,$x,$y);
            //return r,g,b,alpha
            $mask_pix_color = imagecolorsforindex($mask, $mask_pix);
            if ($mask_pix_color['alpha'] < 127) {
                $src_pix = imagecolorat($src,$x,$y);
                $src_pix_array = imagecolorsforindex($src, $src_pix);
                imagesetpixel($src, $x, $y, imagecolorallocatealpha($src, $src_pix_array['red'], $src_pix_array['green'], $src_pix_array['blue'], 127 - $mask_pix_color['alpha']));
            }
        }
    }

}

$src = imagecreatefrompng('source.png');
$mask = imagecreatefrompng('mask.png');

image_mask($src, $mask);

imagepng($src);

imagedestroy($src);
imagedestroy($mask);

  ?>

答案 1 :(得分:-1)

“imagesavealpha()期望参数1为资源,字符串为” imageavealpha给出的参数1错了, 它需要资源,资源可能是imagecreatetruecolor / imagecreatefrompng create