Я занимаюсь рефакторингом старой библиотеки обрезки / изменения размера изображений, которую я написал около 5 лет назад, и застрял, пытаясь восстановить одну из ее функциональных возможностей.Самое смешное, что я даже не уверен, что это сработало тогда, потому что я, вероятно, никогда не использовал его.
Мне нужно иметь возможность работать с изображениями png, сохраняя прозрачность (что работает), но я такжеЯ не смог бы заполнить прозрачную часть изображения цветом.
Создание пустого изображения и заливка его цветом работает нормально, но когда я пытаюсь вставить поверх него свой png, фонснова становится прозрачным.
Вот упрощенная версия моего кода:
<?php
$src = imagecreatefrompng($pathToSomePngFile);
imagealphablending($src, false);
imagesavealpha($src, true);
$output = imagecreatetruecolor($width, $height);
if ($backgroundColor) {
$fillColor = imagecolorallocate(
$output,
$backgroundColor['r'],
$backgroundColor['g'],
$backgroundColor['b']
);
imagefilledrectangle(
$output,
0,
0,
$width,
$height,
$fillColor
);
} else {
imagealphablending($output, false);
imagesavealpha($output, true);
}
imagecopyresampled(
$output,
$src,
0,
0,
0,
0,
$width,
$height,
$width,
$height
);
imagepng($output, $pathToWhereImageIsSaved);
ОБНОВЛЕНИЕ
Обновлено с решением delboy1978uk, чтобы заставить его работать безизменить мои другие настройки.