Imagecopy не работает должным образом

Я пытался реализовать процедуру отображения рейтинга для оценки в виде звездочек, передаваемых GET в php-файле.

Вот код для 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

Я получаю следующий результат:

введите описание изображения здесь

Какие могут быть возможные ошибки, которые приводят к ненормальному фону в конечном изображении?

Пожалуйста, дайте возможные решения также.

Заранее спасибо 🙂

0

Решение

Похоже, что это 24-битные изображения PNG с прозрачностью. Вы должны сказать GD сохранить информацию о прозрачности тоже. Добавлять:

imagesavealpha($dst_im, true);

перед рендерингом вашего изображения

1

Другие решения

Других решений пока нет …