PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Bilder zusammen setzen



TruckerB
23.09.2006, 20:59
Moin, Ich möchte aus mehreren Bildmodulen ein Bild zusammen setzen. und zwar mittels PHP... das problem dabei ist aber, das ich nicht weis, wie ich mehrere Bilder zusammen setze.
ein einzelnes Bild füge ich ja mitels $img = ImageCreateFromGIF('bild.gif'); ein... Aber ich bekomme es nicht hin ein zweites bild darüber einzufügen...

Ich stelle mir das so vor, das ich vorher ein Formular abschiche und nachher verschiedene Hintergrundbilder mit verschiedenen weiteren grafiken zusammen zu etzen... Also in verschiedenen ebenen... hoffe, ihr versteht, was ich meine

Niwa Daisuke
25.09.2006, 00:26
imagecopy (http://de.php.net/manual/de/function.imagecopy.php) bzw. imagecopyresized (http://de.php.net/manual/de/function.imagecopyresized.php) könnten Dir helfen. :)

Chris
25.09.2006, 14:01
Oder an imagemagick weiterleiten und die Ausgabe zurücknehmen wenn der Server das installiert hat. Viele Galleryscripte z.B. haben das ja auch sogar als Abhängigkeit.

TruckerB
08.10.2006, 07:27
Ich habe folgendes geschrieben:

<?php
Header("Content-Type: image/gif");

$width = 15; #Weite des Bildes
$height = 15; #Höhe des Bildes
$img = ImageCreateFromGIF('bg.gif'); //Pfad zum Bild
imagecopy($img, 'aus.gif', 0, 0, 0, 0, 15, 15);

ImageGIF($img);
ImageDestroy($img)
?>
Angeblich ist da ein fehlerdrin... Welcher denn? Das mit den Bildern ist sowiso kompliziert... gibt es da ne lektüre für?

juke*
08.10.2006, 10:41
bilder sind echt ne dumme sache! habs schon x-mal versucht und immer sind die dinger angeblich fehlerhaft, obwohl ich den code sogar aus irgendwelchen php foren kopiert habe und lediglich um eine variable zur datumsausgabe oder so ergänzt hab...

alles kacke :D

Rolus
08.10.2006, 11:01
Wo ist den das Problem mit den Bildern? Sind eigentlich ganz praktisch, wenn man ds PHP Manual benutzen kann :). Die Funktion imagecopy() erwartet als zweiten Parameter auch eine Bild-Resource und nicht den Namen eines Bildes. Der Code müsste also etwa so aussehen:

<?php
Header("Content-Type: image/gif");

$width = 15; #Weite des Bildes
$height = 15; #Höhe des Bildes
$img = ImageCreateFromGIF('bg.gif'); //Pfad zum 1. Bild
$img2 = ImageCreateFromGIF('aus.gif'); //Pfad zum 2. Bild
imagecopy($img, $img2, 0, 0, 0, 0, 15, 15);

ImageGIF($img);
ImageDestroy($img)
?>

freundliche Grüße, Rolus

TruckerB
22.10.2006, 10:25
Danke, kannst du mir noch verraten, wie man das mit mehreren Bildern macht? Also nicht nur mit 2 sondern 4 Bildern...

Rolus
22.10.2006, 11:56
Genau nach dem gleichen Prinzip. Mit ImageCreateFromXXX() lädst du die Bilder und mit imagecopy() fügst du sie in das Hauptbild ein. Das Beispiel von oben könnte also erweitert so aussehen:

<?php
Header("Content-Type: image/gif"); // Das Ganze soll ein GIF werden

$img = ImageCreateFromGIF('bg.gif'); // Der Hintergrund
$img2 = ImageCreateFromGIF('bild2.gif'); // Bild 2 wird geladen
$img3 = ImageCreateFromGIF('bild3.gif'); // Bild 3 wird geladen
$img4 = ImageCreateFromGIF('bild4.gif'); // Bild 4 wird geladen
imagecopy($img, $img2, 0, 0, 0, 0, 15, 15); // Bild 2 wird auf's Hintergrundbild gesetzt
imagecopy($img, $img3, 0, 15, 0, 0, 15, 15); // Bild 3 15 Pixel weiter unten
imagecopy($img, $img4, 0, 30, 0, 0, 15, 15); // Nochmal 15 Pixel weiter unten

ImageGIF($img); // GIF erstellen
// Speicher wieder freigeben ...
ImageDestroy($img);
ImageDestroy($img2);
ImageDestroy($img3);
ImageDestroy($img4);
?>
Man kann natürlich auch nur eine Bild-Ressource für die ganzen Bilder, die hinzukopiert werden, nutzen. Dann muss man eben abwechselnd ImageCreateFromGIF() und imagecopy() aufrufen.

freundliche Grüße, Rolus

TruckerB
22.10.2006, 15:54
Jup, klappt... aber wir Transparenz nicht übernommen? zumindest wird bei mir ein Weißer hintergund angezeigt...

Rolus
22.10.2006, 16:06
Transparenz müsste eigentlich übernommen werden. Vielleicht erstellst du einen Bildtyp, der keine Transparenz unterstützt, oder es muss weiß sein (weil der Untergrund weiß ist) oder mit den Bildern stimmt was nicht ...

freundliche Grüße, Rolus