我想用掩码替换图像的透明像素,我使用此功能但我一直收到错误。
当我尝试:
<?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
我尝试将imageCreateFromPng
和header('Content-Type: image/png');
添加到图片中,但之后我只得到一个空页。
答案 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