Imagecopy无法正常工作

时间:2014-09-26 16:55:27

标签: php get png gd

我一直在尝试实施一个评级显示程序,以在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.png

“rating_back.png”:

rating_back.png

我得到以下结果:

enter image description here

可能导致最终图像背景异常的错误是什么?

请提供可能的解决方案。

提前致谢:)

1 个答案:

答案 0 :(得分:1)

看起来这些是具有透明度的24位PNG图像。你需要告诉GD保存透明度信息。添加:

imagesavealpha($dst_im, true);
在渲染图像之前