Bei Verkleinerung eines Gif-Bildes die Transparenz behalten

queicherius

♥ PHP ♥
Bei meiner Verkleinerungsmethode wird leider der transparente Hintergrund von gif-Bildern schwarz zurückgegeben...

Ich hab mich auch schon mit imagecopymerge bekannt gemacht, allerdings glaub ich, dass das nicht das richtige ist :)

Mein Code sieht gerade so aus:
PHP:
$imagesize = getimagesize($image_path);
	$image_width = $imagesize[0];
	$image_height = $imagesize[1];
	$crop_array = explode('x', $_GET['crop']);
	$new_image_width = $crop_array[0];
	$new_image_height = $crop_array[1];
	
	if ($new_image_height == '')
	{
		$new_image_height = intval($image_height*$new_image_width/$image_width);
	}
	
	
	if ($new_image_width == '')
	{
		$new_image_width = intval($image_width*$new_image_height/$image_height);
	}
	
	$new_image = imagecreate($new_image_width, $new_image_height);
	imagecopyresized($new_image, $image_resource, 0, 0, 0, 0, $new_image_width, $new_image_height, $image_width, $image_height);
	imagedestroy($image_resource);

Wie bekomme ich die Gifs jetzt transparent :confused:
 
Wenn ich das richtig verstanden hab, dann kann man damit eine Farbe auf Transparenz setzen...
Und das bringt mir leider nichts, denn im Bild kann ja auch Schwarz vorkommen...

Oder wie?
 
..., denn im Bild kann ja auch Schwarz vorkommen...
Ja kann sie, ... kann aber auch nicht.
Ein GIF-Bild enthält maximal 256 Farben und eine davon darfst du dir für die Transparenz aussuchen. Wenn diese ausgesuchte Farbe im Bild außerhalb des Hintergrundes vorkommt, dann hast du halt Pech.

Vermutlich kommt aber in deinem Bild schwarz nur im Hintergrund vor (war ja vorher auch schon ein GIF-Bild mit Transparenz), so dass du nur noch die Farbe eines Pixels im Hintergrund (meistens Ecke oben links) auslesen musst.

Ich hoffe das bringt dir jetzt was ...
 
Hallo,

imagecopyresized kopiert nur nicht-transparente Pixel. Du musst also zuerst den Hintergrund des neues Bildes mit der Transparenz-Farbe des ursprünglichen Bildes füllen, diese im neuen Bild als Transparenz-Farbe setzen und dann erst kopieren.

Grüße,
Matthias
 
Zurück