Dynamisches Bild erstellen

Sasser

Erfahrenes Mitglied
Guten Tag!

Ich erstelle mit PHP ein Bild. Darin integriere ich ein anderes Bild. Nun habe ich das Problem, dass wenn am Rand des zu integrierenden Bildes die Farbe schwarz vorkommt, dass dies ebenfalls in weiß umgewandelt wird. Dadurch sieht das Bild ausgerissen und nicht mehr schön aus.

Was mache ich falsch, dass dies geschieht?

PHP:
$image = imagecreatetruecolor ( "500", "230" );
imagecopy ( $image, imagecreatefromjpeg ( $pic ), "0", "0", "-325", "-65", "500", "300" );
imagefill ( $image, "0", "0", imagecolorallocate ( $image, "255", "255", "255" ) );

Hmm das Problem scheint nicht an der Funktion zu liegen, sondern am Bild selbst.

Ich habe mir jetzt einmal dieses Bild heruntergeladen und im Windows in der Vorschau auf der linken Seite sind einige Teile von schwarzen Bereichen wie transparent!? Wie ist sowas bei jpg-Bildern möglich? Wenn ich das Bild jedoch normal auf einer Webseite einbinde, werden diese Bereiche schwarz dargestellt.

Hat jemand dieses Phänomen schonmal beobachtet? Ich dachte, jpg kennt keine Transparenz!?

Ich habe nun einmal versucht, den Hintergrund des zu integrierenden Bildes schwarz zu färben, denn dann werden keine weißen Flächen dargestellt, jedoch scheint das nicht zu funktionieren!?

PHP:
$image = imagecreatetruecolor ( "500", "230" );
$pic = imagecreatefromjpeg ( $picurl );
imagefill ( $pic, "0", "0", imagecolorallocate ( $image, "0", "0", "0" ) );
imagecopy ( $image, $pic, "0", "0", "-325", "-65", "500", "300" );
imagefill ( $image, "0", "0", imagecolorallocate ( $image, "255", "255", "255" ) );

Weiß keiner einen Rat, warum der Fehler auftritt?
 
jpeg kan mWn kein Transparent.

Setzt du später im Code mit imagecolortransparent() noch eine Farbe auf Transparent?
 
Nein, es erfolgt lediglich noch das Abspeichern als Bild. Aus diesem Grund verstehe ich nicht, warum ein Teil vom schwarzen Bereich durchsichtig ist, man also den weißen Hintergrund sieht!?

Erst nachdem ich den schwarzen Hintergrund des Hauptbildes mit:

PHP:
imagefill ( $image, "0", "0", imagecolorallocate ( $image, "255", "255", "255" ) );

in einen weißen umwandele werden auch Teile des zu integrierenden Bildes weiß gemacht.

Ich vermute, dass durch imagefill auch schwarze Teile des Bildes weiß gemacht werden.

EDIT: Ich lasse den Hintergrund nun einfach schwarz, dann sieht es gut aus!
 
Zuletzt bearbeitet:
Zurück