我一直在尝试实施一个评级显示程序,以在PHP文件中通过GET传递的星形评级。
以下是rate.php的代码:
$filename= "rating.png";
$rating = $_GET['rating'];
list($w, $h, $type, $attr) = getimagesize($filename);
$src_im = imagecreatefrompng($filename);
$dst_im = imagecreatefrompng("rating_back.png");
$src_x = '0'; // begin x
$src_y = '0'; // begin y
$src_w = $w * $rating / 5; // width
$src_h = $h; // height
$dst_x = '0'; // destination x
$dst_y = '0'; // destination y
imagecopy($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);
header("Content-type: image/png");
imagepng($dst_im);
imagedestroy($dst_im);
$rating
是根据GET请求的浮点值。
但是当我尝试使用以下图像实现rate.php?rating=4.3
时:
“rating.png”:
“rating_back.png”:
我得到以下结果:
可能导致最终图像背景异常的错误是什么?
请提供可能的解决方案。
提前致谢:)
答案 0 :(得分:1)
看起来这些是具有透明度的24位PNG图像。你需要告诉GD保存透明度信息。添加:
imagesavealpha($dst_im, true);
在渲染图像之前