imagecopymerge med en jpg + png(24)

PHP

1 svar · 384 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Trådstart#1

Försöker sätta ihop en stor jpg bakgrund och ovanpå denna ska det in en transparent png in, men mitt problem är att png:en blir inte helt transparent när bilderna har satts ihop.

T.ex här är png bilden jag använder:
http://www.urme.com/df/dot1.png (En png24 sparad i photoshop)
Så här ser det ut efter jag satt ihop bakgrunden och denna png:
http://www.urme.com/df/exempel.jpg

Så här ser koden ut:

function addnewdot($dotimagesource, $source, $xpos, $ypos) {
	$dotimage = imagecreatefrompng($dotimagesource);
	$dotimageX = imagesx($dotimage);
	$dotimageY = imagesy($dotimage);
	imagealphablending($dotimage, true);
	imagesavealpha($dotimage, true);

	$xpos = $xpos - ($dotimageX/2);
	$ypos = $ypos - ($dotimageY/2);
	imagecopymerge($source,$dotimage,$xpos,$ypos,0,0,$dotimageX,$dotimageY,100);
}

$dotimage1 = "dot1.png";
$backgroundSource = "karta.jpg";
$source = imagecreatefromjpeg($backgroundSource);
addnewdot($dotimage1, $source, 33, 271);
addnewdot($dotimage1, $source, 233, 271);

header('Content-type: image/jpg');
imagejpeg($source);
imagedestroy($source);

Som ni ser har jag försökt lägga dit imagealphablending och imagesavealpha, men gav inget bättre resultat. Hur kan jag få png bilden att vara transparent som den bör vara?

Medlem sedan apr. 2001762 inlägg
#2

Denna kodrad verkar funka mycket bättre:

imagecopy($source,$dotimage,$xpos,$ypos,0,0,$dotimageX,$dotimageY);

istället för imagecopymerge();

257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)