php gd - Mask over image -
i want replace transparent pixels of image mask, i'm using function keep getting errors.
when try:
<?php function image_mask($src, $mask) { imagesavealpha($src, true); imagealphablending($src, false); // scan image pixels // imagesx = image width ($x = 0; $x < imagesx($src); $x++) { // imagesy = image height ($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'); ?> i following errors:
warning: imagesavealpha() expects parameter 1 resource, string given in ... on line 7 warning: imagealphablending() expects parameter 1 resource, string given in ... on line 8 warning: imagesx() expects parameter 1 resource, string given in ... on line 11 i tried adding imagecreatefrompng , header('content-type: image/png'); images empty page.
i don`t know result want , , feel page show wrong . can try run program
<?php header('content-type: image/png'); function image_mask(&$src, &$mask) { imagesavealpha($src, true); imagealphablending($src, false); // scan image pixels // imagesx = image width ($x = 0; $x < imagesx($src); $x++) { // imagesy = image height ($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); ?>
Comments
Post a Comment