# Bild im Bild laden (Wasserzeichen-Effekt)



## Constan (19. Mai 2007)

Hallo ich habe ein Problem ich möchte gerne 3 oder mehr Bilder mit diesen Code laden. Mit 2 Geht es das bg und das erste Wasserzeichen, aber wie nun mit 3 oder mehr?

Mein Code, Funktioniert nicht (soll aber)

```
<?php
//Bild anzeigen lassen
header("Content-Type: image/jpeg");
//Bilder in Variablen Laden
$Grafik = ImageCreateFromJPEG("grafik.jpg");
$Wasserzeichen = ImageCreateFromPNG("wasserzeichen.png");
$Wasserzeichen2 = ImageCreateFromPNG("wasserzeichen2.png");
//Bearbeitung
ImageCopy($Grafik, $Wasserzeichen, $Wasserzeichen2,
imagesx($Grafik)-imagesx($Wasserzeichen)-imagesx($Wasserzeichen2),
imagesy($Grafik)-imagesy($Wasserzeichen)-imagesy($Wasserzeichen2), 0, 0,
imagesx($Wasserzeichen)-imagesx($Wasserzeichen2),
imagesy($Wasserzeichen)-imagesy($Wasserzeichen2));
//Bilder ausgabe
imagejpeg($Grafik);
//Bild Speichern
imagejpeg($Grafik, "./testbild.jpeg");

?>
```

Orginal Code Funktioniert

```
<?php
//Bild anzeigen lassen
header("Content-Type: image/jpeg");
//Bilder in Variablen Laden
$Grafik = ImageCreateFromJPEG("grafik.jpg");
$Wasserzeichen = ImageCreateFromPNG("wasserzeichen.png");
//Bearbeitung
ImageCopy($Grafik, $Wasserzeichen,
imagesx($Grafik)-imagesx($Wasserzeichen),
imagesy($Grafik)-imagesy($Wasserzeichen), 0, 0,
imagesx($Wasserzeichen),
imagesy($Wasserzeichen));
//Bilder ausgabe
imagejpeg($Grafik);
//Bild Speichern
imagejpeg($Grafik, "./testbild.jpeg");

?>
```


----------



## Marvin Schmidt (20. Mai 2007)

Hi Constan,
schau dir den Syntax der [phpf]imagecopy[/phpf]-Funktion nochmal an. Der ermöglicht es nur von einem Quellbild zu kopieren, folglich musst du die entsprechenden Ausschnitte der Bilder einzelnd auf die Hintergrundgrafik kopieren.

Gruß
Marvin


----------



## Constan (20. Mai 2007)

OK Klapt supper, Danke (ich dachte nur das man ihn mehrere gleich übergeben kann).


----------



## drux (15. Juli 2009)

Hallo,
bin jetzt ganz neu hier und versuche auch schon seit stunden die imagecopy() zum laufen zu bringen 
Das was ich bisher habe sind 3 Zeilen die nicht funktionineren, und ich weiss nicht warum...
Ohne Header krieg ich krytische Zeichen und mit kann er das Bild (angeblich wegen Fehlern) nicht anzeigen.


```
header("Content-Type: image/jpeg");
$pic = ImageCreateFromJPEG("dsc.jpg");
//$dia = ImageCreateFromPNG("img/dia.png");
//$gallery = imagecreatetruecolor(200, 200);
//ImageCopy($gallery, $pic, 20, 40, 0, 0, 160, 120);
//ImageCopy($gallery, $dia, 0, 0, 0, 0, 200, 200);
imagejpeg($pic);
//fb_read_write_exif_data('dsc.jpg');
```

Das sollte doch wenigsztens das jpg anzeigen oder seh ich das falsch? 

Dank euch


----------



## Chumper (15. Juli 2009)

"imagecreatefromjpeg" wird klein geschrieben.


----------



## pHyro (15. Juli 2009)

@Chumper: Das ist egal, PHP ist nicht case-sensitive.

Lg


----------



## drux (15. Juli 2009)

seit wann is php case sensitive?
ausserdem wuerde er dann auch nichts kryptisches ausgeben, die fkt geht ja!


----------



## Chumper (15. Juli 2009)

Ihr habt natürlich recht, warum ich das geschrieben habe weiß ich auch nicht...
Man merkt, dass ich müde bin...

Kann der Browser das Bild denn so anzeigen, wenn du es direkt aufrufst?


----------



## drux (15. Juli 2009)

jop, das geht


----------



## Chumper (15. Juli 2009)

Tritt bei anderen Bildern das Problem auch auf?

sonst probier mal die größe per "getimagesize()" abzufragen, ein neues Bild mit der Größe zu erstellen und dort das Bild reinzukopieren, vll geht das ja.


----------



## drux (15. Juli 2009)

es ging nichmal mit der beispielfunktion von php.net
und dem php.gif  irgendwas stimmt hier nich, evtl irgendwas von php.ini deaktiviert?!


----------



## Chumper (15. Juli 2009)

Das ist ungewöhnlich... ich muss zugeben, das kann ich mir auch nicht erklären, wenn selbst das Beispielskript nicht funktioniert...

Ich könnte im Moment auch nur raten...
welche PHP version hast du denn?


----------



## drux (15. Juli 2009)

5.2.10

aufm IIS7 :x


----------



## Chumper (15. Juli 2009)

Ich kann dir da nicht weiterhelfen, aber vielleicht weiß jemand Rat, der da mehr Ahnung von hat. Tut mir leid.


----------



## drux (15. Juli 2009)

hmm ok, danke trotzdem fuer die muehe


----------



## Stair (3. Oktober 2009)

Beim Upload muß man bei php - Datien mit grafischen Inhalten in den binären Modus wechseln - sofern ich weiß


----------



## Chumper (3. Oktober 2009)

hat aber nichts mit dem Thema zu tun oder?
Vll falsches Thema?


----------



## saftmeister (4. Oktober 2009)

drux hat gesagt.:


> Ohne Header krieg ich krytische Zeichen und mit kann er das Bild (angeblich wegen Fehlern) nicht anzeigen.



Beim senden von Bild-Daten muss auch immer dieser Header gesendet werden. Ohne diese Angabe, meldet PHP text/html an den Client. Das ist sicher nicht das, was du willst ;-) Allerdings würde ich den header erst dann senden, wenn alle Bilddaten aufbereitet und damit fertig für die Übertragung sind. Wenn du das Script vorher noch mit einer Fehlermeldung abbrechen willst, kommt wieder nur Unsinn raus.



drux hat gesagt.:


> ```
> header("Content-Type: image/jpeg");
> $pic = ImageCreateFromJPEG("dsc.jpg");
> //$dia = ImageCreateFromPNG("img/dia.png");
> ...



Nicht unbedingt. Du könntest ein rudimentäre Fehler-Behandlung einbauen und z.B. mal das Handle $pic prüfen:


```
if ( !$pic )
{
   die ("imagecreatefromjpeg() failed!");
}
```

Desweiteren empfehle ich in jedem Fall die Bilder-Ressourcen mit imagedestroy() auf zu räumen.



			
				Chumber hat gesagt.:
			
		

> "imagecreatefromjpeg" wird klein geschrieben.





			
				drux hat gesagt.:
			
		

> seit wann is php case sensitive?
> ausserdem wuerde er dann auch nichts kryptisches ausgeben, die fkt geht ja!



Nunja, ich habe folgendes in den Kommentaren zu imagecreatefromjpeg() gefunden: 



> I found that:
> imagecreatefromJPEG is for .JPEG and .JPG ending
> &
> imagecreatefromjpeg is for .jpeg and .jpg ending.
> ...


http://de.php.net/manual/de/function.imagecreatefromjpeg.php#89251


----------

