Я хочу заменить прозрачные пиксели изображения на маску, я использую эту функцию, но я продолжаю получать ошибки.Маска над изображением
Когда я пытаюсь:
<?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');
к изображениям, но потом я просто получаю пустую страницу.
Я попытался добавить imagecreatefrompng, но затем я получу пустую белую страницу. – Keith666