Hallo beste mensen,
Ik wil jullie vragen of jullie weten hoe je transparante plaatjes kunt overlappen, en dan uitvoeren naar een PNG file en die saven/laten downloaden.

Zoals.
Je hebt een foto.
Je wilt daar een tekst in zetten met je eigen lettertype, dat bestaat uit transparent gifjes.
Hoe kun je ze over elkaar plakken en dan saven naar 1 (png/gif) bestand?

Ik hoop dat jullie snappen wat ik bedoel, en anders maak ik nog wel een Paint-afbeelding met uitleg wat ik bedoel :D

Alvast bedankt en gelukkig nieuwjaar alvast :),
Aron
Dit werkt voor 1 PNG bestand en 1 GIF bestand:

<?php
$dest = imagecreatefrompng('image1.png');
$src = imagecreatefromgif('image2.gif');

imagealphablending($dest, false);
imagesavealpha($dest, true);

imagecopymerge($dest, $src, 
		0, // waar je de afbeelding wilt plakken ($src_x)
		0, // waar je de afbeelding wilt plakken ($src_y)
		0, // vanaf waar ($dest_x)
		0, // vanaf waar ($dest_y)
		imagesx($src), 
		imagesy($src), 
		100
	);

header('Content-Type: image/png');
imagepng($dest);

imagedestroy($dest);
imagedestroy($src);
?>
Thanx.
Moet ik dit dan herhalen om telkens een letter erbij te plakken.

Dus de width van de letter + 2 pixels, en dan de volgende letter met een
<?php
$len = strlen($_GET['text']);
for($i = 0, $i <= $len, $i++) {
....
} ?> 
Oh, ik dacht dat je een GIF op een afbeelding wilt plakken, maar je wilt er dus tekst op schrijven. Je moet dan eerst je font converten naar TTF en dan het volgende script gebruiken:

<?php
$dest = imagecreatefrompng('image1.png');

$textcolor = imagecolorallocate($dest, 255, 255, 255);

imagettftext($dest, 
	20, // $size 
	0, // $angle
	20, // $x (gemeten vanaf de linksonderhoek van de eerste letter)
	30, // $y (gemeten vanaf de linksonderhoek van de eerste letter)
	$textcolor, // $color
	'arial.ttf', // $fontfile,
	$_GET['text'] // $text
	);

header('Content-Type: image/png');
imagepng($dest);

imagedestroy($dest);
?>
Misschien een hele stomme, maar waarom plak je dit niet gewoon in 1 afbeelding met bijvoorbeeld paint, en dan upload je het in 1 keer naar je webserver?

Tim
@Koen ik bedoel dus dat je transparent images op een background kan plakken.
Ik gaf als voorbeeld tekst maar dat was misschien niet het goede. Wat ik eigenlijk wil is van Minecraft.
Je heb het vak van een crafting table en dan kun je met bepaalde inputs de plaatjes op de juiste items krijgen.
Als je snapt wat ik bedoel. Het is dus een generator die met GIF inputs die die op de juiste plaats zet alles naar PNG uitschrijft.
Als het dus GIFjes zijn, kan je de methode uit mijn eerste reactie gebruiken. Als je meerdere lagen wilt, zul je zoiets als dit moeten doen:

<?php
$gifs = array(
	array(
		'filename' => 'image2.gif',
		'x' => 0,
		'y' => 0,
	),
	array(
		'filename' => 'image3.gif',
		'x' => 50,
		'y' => 50,
	),
	array(
		'filename' => 'image4.gif',
		'x' => 100,
		'y' => 100,
	),
);

$src = null;
while (count($gifs) > 0) {
	$gif = array_shift($gifs);
	if ($src == null) {
		$src = imagecreatefromgif($gif['filename']);
	} else {
		$new_src = imagecreatefromgif($gif['filename']);
		imagealphablending($src, false);
		imagesavealpha($src, true);

		imagecopymerge($src, $new_src, 
	        $gif['x'], // waar je de afbeelding wilt plakken ($src_x)
	        $gif['y'], // waar je de afbeelding wilt plakken ($src_y)
	        0, // vanaf waar ($dest_x)
	        0, // vanaf waar ($dest_y)
	        imagesx($new_src), 
	        imagesy($new_src), 
	        100
	    );

	    imagedestroy($new_src);
	}
}

$dest = imagecreatefrompng('image1.png');

imagealphablending($dest, false);
imagesavealpha($dest, true);

imagecopymerge($dest, $src, 
        0, // waar je de afbeelding wilt plakken ($src_x)
        0, // waar je de afbeelding wilt plakken ($src_y)
        0, // vanaf waar ($dest_x)
        0, // vanaf waar ($dest_y)
        imagesx($src), 
        imagesy($src), 
        100
    );

header('Content-Type: image/png');
imagepng($dest);

imagedestroy($dest);
imagedestroy($src);
?>
Dank u.
Zal ff kijke offie werkt.
Sorry. Verkeerde toppic. Wil jij dit even verwijderen Aar?

Tim.

Reageren