1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.4'

* PHP-8.4:
  Fix GH-17349: Tiled truecolor filling looses single color transparency
This commit is contained in:
Christoph M. Becker
2025-01-04 14:54:27 +01:00
3 changed files with 30 additions and 1 deletions

View File

@@ -932,7 +932,9 @@ static int gdImageTileGet (gdImagePtr im, int x, int y)
srcy = y % gdImageSY(im->tile);
p = gdImageGetPixel(im->tile, srcx, srcy);
if (im->trueColor) {
if (p == im->tile->transparent) {
tileColor = im->transparent;
} else if (im->trueColor) {
if (im->tile->trueColor) {
tileColor = p;
} else {

27
ext/gd/tests/gh17349.phpt Normal file
View File

@@ -0,0 +1,27 @@
--TEST--
GH-17349 (Tiled truecolor filling looses single color transparency)
--EXTENSIONS--
gd
--FILE--
<?php
require_once __DIR__ . "/func.inc";
$tile = imagecreatetruecolor(8, 8);
$red = imagecolorallocate($tile, 255, 0, 0);
imagefilledrectangle($tile, 0, 0, 7, 7, $red);
imagecolortransparent($tile, $red);
$im = imagecreatetruecolor(64, 64);
$bg = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 63, 63, $bg);
imagecolortransparent($im, $bg);
$fg = imagecolorallocate($im, 0, 0, 0);
imageellipse($im, 31, 31, 50, 50, $fg);
imagesettile($im, $tile);
imagealphablending($im, false);
imagefill($im, 31, 31, IMG_COLOR_TILED);
test_image_equals_file(__DIR__ . "/gh17349.png", $im);
?>
--EXPECT--
The images are equal.

BIN
ext/gd/tests/gh17349.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B