mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 29.03.2024 12:14 Benutzername: Passwort: Auto-Login

Thema: [PHP] Captcha-Script mit imagecopymerge() vom 05.05.2008


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [PHP] Captcha-Script mit imagecopymerge()
Autor Nachricht
Froschkoenig84
Threadersteller

Dabei seit: 21.02.2007
Ort: München
Alter: 40
Geschlecht: Männlich
Verfasst Mo 05.05.2008 14:36
Titel

[PHP] Captcha-Script mit imagecopymerge()

Antworten mit Zitat Zum Seitenanfang

Ich will also zwei Grafiken erst deckungsgleich übereinander legen
und dann zu einer Grafik verschmelzen.


[img]http://froschkoenig84.bplaced.net/TRYOUT/CAPTCHA/G1/background.img.php[/img]
background.img.php

[img]http://froschkoenig84.bplaced.net/TRYOUT/CAPTCHA/G1/foreground.img.php[/img]
foreground.img.php

Diese besitzen beide einen weißen Hintergrund, könnte ich aber auch transparent erstellen.
Beide Grafiken sollen nun übereinandergelegt verschmolzen werden. (In PS würde man das "merge" oder "flatten" nennen.) - Die frage ist nun, wie verschmelze ich zwei übereinandergelegte Grafiken via PHP?

Code:
header("Content-type: image/png");

$background = imagecreatefrompng("background.img.php");
$foreground = imagecreatefrompng("foreground.img.php");

imagecolortransparent($foreground,imagecolorallocate($foreground,255,255,255));
imagecopymerge($background,$foreground,0,0,0,0,150,50,100);
imagedestroy($foreground);

imagepng($background);


Laut MANUAL würde man dafür imagecopy() oder noch besser imagecopymerge() nutzen, aber bei mir funktioniert da leider überhaupt nichts. - Was mach ich falsch? - Wer eine eine Idee/Lösung?

___
auf bald, ...
***der Frosch (nap-star)
  View user's profile Private Nachricht senden
dastef

Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Mo 05.05.2008 19:45
Titel

Antworten mit Zitat Zum Seitenanfang

vllt beglückst uns ja mit ner fehlermeldung oder irgendwie sowas?
  View user's profile Private Nachricht senden
Anzeige
Anzeige
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Mo 05.05.2008 20:21
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
zwei Grafiken erst deckungsgleich übereinander legen
und dann zu einer Grafik verschmelzen.

Ja, das funktioniert mit PHP.
Natürlich nur, wenn die GD-Library installiert ist.

Das habe ich auch öfters gemacht, um Bilder automatisch mit einem Wasserzeichen zu versehen.

Zitat:
aber bei mir funktioniert da leider überhaupt nichts

Was bedeutet funktioniert nicht?
gibt es eine Fehlermeldung? Wenn ja, welche?
Zitat:
Was mach ich falsch?

Du gibst uns zuwenig brauchbare Informationen.
Zitat:
Wer eine eine Idee/Lösung?

Fehlermeldung posten.

Ist das oben gepostete eigentklich dein kompletter Code? Ich kann weder das öffnende noch das schließende PHP-Tag sehen. Eventuell hast du vielleicht eine Leerzeile davor, so daß diese zum Client geschickt wird, bevor du header() aufrufst? Wäre aber nur so ein Rateversuch... Ohne mehr Information kann man dir nicht helfen.
  View user's profile Private Nachricht senden
Froschkoenig84
Threadersteller

Dabei seit: 21.02.2007
Ort: München
Alter: 40
Geschlecht: Männlich
Verfasst Di 06.05.2008 07:12
Titel

Antworten mit Zitat Zum Seitenanfang

Natürlich habe ich die GD, genauer die GD2 (Standardinstallation: PHP 5.2.6).

Eine Fehlermeldung gibt es nicht, er gibt lediglich den Dateinamen aus, ... wobei, ich habe es gerade mal auf meinen Webserver hochgeladen, da kommt eine Fehlermeldung:
Zitat:
Die Grafik "http://froschkoenig84.bplaced.net/TRYOUT/CAPTCHA/G1/captcha.img.php" kann nicht angezeigt werden, weil sie Fehler enthält.


Ja, es fängt natürlich mit der PHP-Einleitung an, habe nur ein SnipSnap gepostet, weil ich dachte das würde reichen.
Da ich erstmal nur am "Probieren" bin, ist die Datei bislang nur wenig dynamisch, modular, bzw. im INCs oder Funktionen unterteilt. - Hier folgt also nochmal der gesamte Code, wobei ich ich ja eigentlich bereits alles gepostet hatte:
Code:
<?php

header("Content-type: image/png");

$background = imagecreatefrompng("background.img.php");
$foreground = imagecreatefrompng("foreground.img.php");

imagecolortransparent($foreground,imagecolorallocate($foreground,255,255,255));
imagecopymerge($background,$foreground,0,0,0,0,150,50,100);
imagedestroy($foreground);

imagepng($background);

?>


Ich möchte nur mal ein funktierendes Beispiel sehen, wie das mit dem Übereinanderlegen und Verschmelzen funktioniert. - Auch die Beispiele (USER-Kommentare) aus dem MANUAL funktionieren bei mir nur selten oder entsprechend fehlerhaft.

Wie hast du das mit dem Wasserzeichen denn gemacht? - Im Grunde ist es ja genau, was ich will, nur eben nicht im Alpha-Modus.

___
auf bald, ...
***der Frosch (nap-star)
  View user's profile Private Nachricht senden
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Di 06.05.2008 08:59
Titel

Antworten mit Zitat Zum Seitenanfang

Zitat:
Wie hast du das mit dem Wasserzeichen denn gemacht? - Im Grunde ist es ja genau, was ich will, nur eben nicht im Alpha-Modus.

mit imagecopyresampled(). ich such das script nachher mal raus und schick es dir.
  View user's profile Private Nachricht senden
Snifferdog

Dabei seit: 08.03.2007
Ort: Düsseldorf
Alter: 35
Geschlecht: Männlich
Verfasst Di 06.05.2008 09:19
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo,
ich fand bei Googel folgendes Script ... es ist auch dazu da ein Logo über ein anderes Bild zu legen,
aber wie du schon gesagt hast vom Prinzip her ist es ja sehr gleich ...
Was soweit ich das richtig verstanden habe wohl wichtig ist, ist dass beide Bilder den gleichen Bit-Wert haben.

vll kannst du damit ja was anfangen *zwinker*

Code:

// Originalbild einlesen
$img = imagecreatefrompng('originalbild.png');

// Logo-Bild (24Bit + Alpha-Channel) einlesen
$logo_img = imagecreatefrompng('logo.png');

// Logo in untere rechte Ecke kopieren
imagecopy($img, $logo_img,
          (imagesx($img)-imagesx($logo_img))-5,
          (imagesy($img)-imagesy($logo_img))-5,
          0, 0, imagesx($logo_img), imagesy($logo_img));

// Bild als JPEG mit Qualität 75 speichern
imagejpeg($img, 'zielbild.jpg', 75); 

Quelle: http://xhtmlforum.de/37072-php-2-bilder-berlagern-mit-gd.html

Gruß


Zuletzt bearbeitet von Snifferdog am Di 06.05.2008 09:20, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
dastef

Dabei seit: 03.11.2003
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Di 06.05.2008 12:45
Titel

Antworten mit Zitat Zum Seitenanfang

Froschkoenig84 hat geschrieben:
Eine Fehlermeldung gibt es nicht, er gibt lediglich den Dateinamen aus, ... wobei, ich habe es gerade mal auf meinen Webserver hochgeladen, da kommt eine Fehlermeldung:
Zitat:
Die Grafik "http://froschkoenig84.bplaced.net/TRYOUT/CAPTCHA/G1/captcha.img.php" kann nicht angezeigt werden, weil sie Fehler enthält.


dann magste vllt mal den header für den Content-Type weglassen?
Dann siehste auch mal ne Fehlermeldung .. oder eben du wirfst
nen Blick in die Quellcode.
  View user's profile Private Nachricht senden
choise

Dabei seit: 01.02.2007
Ort: Würzburg
Alter: 35
Geschlecht: Männlich
Verfasst Di 06.05.2008 12:56
Titel

Antworten mit Zitat Zum Seitenanfang

kann es sein, dass es vllcht noch im cmyk modus is das bild ?
also ich kenn die bilder von cmyk bildern im browser.

hab mich jetz noch nicht gdlib beschäftigt, darum kann ich nich viel dazu sagen.
aber könnte ja sein, wenn das originalbild diesen modus hat.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Ein Captcha Problem
Captcha in einer Art Lightbox
Reload eines Captcha?
Captcha für eine webmailer.cgi
CGI-Gästebuch Spamschutz - Captcha
[TYPO3][ve_guestbook+sr_freecap] kein captcha im formular
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.