在base64中有一张带有彩色方块的图片,已解码:$pngString = base64_decode($pngBase64);
保存后,在正方形附近出现带有其他颜色的像素,不需要它们。
试过2个变种:
1.在此选项中,如果设置白色背景 - 一切正常,也有黑色,但在边框上显示中间色(例如,如果矩形为红色,则有深紫红色像素)。
$img = imagecreatefromstring($pngString);
$black = imagecolorallocate($img, 0, 0, 0);
imagefill($img, 0, 0, $black);
imagepng($img, $outputFilePath);
imagedestroy($img);
在新图片上叠加:
$img = imagecreatefromstring($pngString);
$w = imagesx($img);
$h = imagesy($img);
$img2 = imagecreatetruecolor($w, $h);
imageantialias($img2, false);
imagefilledrectangle($img2, 0, 0, $w, $h, imagecolorallocate($img2, 0, 0, 0));
imagecopyresampled($img2, $img, 0, 0, 0, 0, $w, $h, $w, $h);
imagepng($img2, $outputFilePath)