Antworten auf deine Fragen:
Neues Thema erstellen

Frage zu Tut: "Dynamisches Signaturbild mit Transparenz"

IceTigers

Noch nicht viel geschrieben

Hallo Forum!
Ich hab eine Frage zu folgendem Tutorial:


Ich habe Code erstmal kopiert und eine Bild mit den Namen usprung.gif hochgeladen und eine Schriftart mit dem Namen schriftart.ttf (klar hätte ich die Namen auch ändern können, aber ich hab das jetzt mal gelassen).

Wenn ich das jetzt alles hochgeladen habe und nun meine PHP-Datei signatur.php im Browser öffne kommt:
Die Grafik "http://1forumtest.1f.funpic.de/bild/signatur.php" kann nicht angezeigt werden, weil sie Fehler enthält.
Jetzt hab ich in den Kommentaren gelesen, dass gif anscheinend nicht mehr unterstützt wird und habe das auch nochmal auf der Homepage nachgelesen (anscheinend wegen irgendwelchen Lizenzen).

Deshalb wollte ich jetzt auf PNG umsteigen:

Code:
<?php

//DynSig.php -- dynamisch Signatur mit Text erzeugen

    Header("Content-type: [B]image/png[/B]");

    $ausgangsbild = "[B]ursprung.png[/B]"; // Pfad zum Bild
    $groesse_ausgangsbild = GetImageSize($ausgangsbild);
    $breite_ausgangsbild=$groesse_ausgangsbild[0];
    $hoehe_ausgangsbild=$groesse_ausgangsbild[1];
    
    $ausgangsbild = [B]ImageCreateFromPNG[/B]($ausgangsbild);
    if(!$ausgangsbild) // Fehler, falls Bild nicht geöffnet werden konnte
    {
      die("Ausgangsbild konnte nicht geöffnet werden");
    }

    $schriftgroesse=8;
    $x=70; //Startwert für XPosition des Textes
    $y=55; //Startwert für YPosition des Textes
    $text = array("PSD-Tutorials.de Fan",
                  "Meine Hand mag die andere",
                  "samy is my hero");
  
    $ausgabetext=$text[rand(0,sizeof($text)-1)];

    $stringlaenge=strlen($ausgabetext);
    $stringbreite=$stringlaenge*$schriftgroesse+$x;

    if($stringbreite < $breite_ausgangsbild)  //Wenn der Text zu schmal ist, ein Bildbreitenminimum festlegen
    {
      $stringbreite = $breite_ausgangsbild;
    }

    $zielbild = ImageCreate($stringbreite, $hoehe_ausgangsbild) or die("Kein Bild erzeugt!"); // Zielbild erstellen
    ImageColorAllocate($zielbild, 236,233,216); //Hintergrundfarbe festlegen

    $schriftfarbe = ImageColorAllocate($zielbild, 19, 51,130);
    imagettftext($zielbild,$schriftgroesse*72/96,0,$x,$y,-1*$schriftfarbe,"schriftart.ttf",$ausgabetext);
  
    ImageCopyMerge($zielbild,$ausgangsbild,0,0,0,0,$breite_ausgangsbild,$hoehe_ausgangsbild,100);

    $transparent=ImageColorAllocate ($zielbild, 236,233,216);
    ImageColorTransparent($zielbild,$transparent);

    [B]ImagePNG[/B] ($zielbild) or die("Endbild nicht erzeugt!"); // Bild ausgeben
    Imagedestroy ($zielbild); // make me scream "yeah"
?>
Allerdings bekomme ich immernoch die gleiche Fehlermeldung wie vorher. Jetzt weiß ich aber nicht, ob Funpic PNG unterstützt, weil da noch was Extra zur GDLib installiert werden muss. Weiß das zufällig jmd?

Ich hab mal folgende Zeile gelöscht:
Code:
$transparent=ImageColorAllocate ($zielbild, 236,233,216);
    ImageColorTransparent($zielbild,$transparent);
weil Transparenz hat man doch nur beim GIF!? Naja hat auch nichts gebracht.

Irgendjmd eine Idee was ich ändern muss oder denkt ihr das liegt an Funpic?
 

dernorb

Nicht mehr ganz neu hier

AW: Frage zu Tut: "Dynamisches Signaturbild mit Transparenz"

wenn du es ohne transparenz machst - teste mal ob jgp funktioniert. als andere variante würde ich es mit einem wasserzeichen, was schon ein bild ist, testen. vl. unterstützt funpic das alles nicht mit text und png
 

IceTigers

Noch nicht viel geschrieben

AW: Frage zu Tut: "Dynamisches Signaturbild mit Transparenz"

Also ich hab es jetzt mal das ganze Zeug bei bplace hochgeladen. Aufruf der signatur.php: (mit PNG)
[FONT=Verdana,sans-serif][/FONT][FONT=Verdana,sans-serif]
Warning: Cannot modify header information - headers already sent by (output started at /users/icetigers/www/bild/signatur.php:10) in /users/icetigers/www/bild/signatur.php on line 14
[/FONT]‰PNG  ��� IHDR��,��,���fæ��� PLTEìéØ3‚¹Ü¢ ›©Ì���iIDATxœíÌ1��  ûG1¥vî„�¤âr¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëår¹\.—Ëu+(`ϪY“‰����IEND®B`‚


Wenn ich es mit JPG mache:
[FONT=Verdana,sans-serif]
Warning: Cannot modify header information - headers already sent by (output started at /users/icetigers/www/bild/signatur_jpg.php:10) in /users/icetigers/www/bild/signatur_jpg.php on line 14
[/FONT].bpe a:link, .bpe a:visited, .bpe a:active { color: #0b4c8e; text-decoration: none; } .bpe a:hover { color: #0D7CEC; } [FONT=Verdana,sans-serif]
Fatal error: Call to undefined function ImageCreateFromJPG() in /users/icetigers/www/bild/signatur_jpg.php on line 21[/FONT]
usprung.jpg ist aber vorhanden. :(
Anscheinend kann nicht einmal das Bild geöffnet werden.
 
Zuletzt bearbeitet:

sokie

Mod | Web

AW: Frage zu Tut: "Dynamisches Signaturbild mit Transparenz"

wenn du die Fehlermeldung bekommst:
[FONT=Verdana,sans-serif]Warning: Cannot modify header information - headers already sent by (output started at /users/icetigers/www/bild/signatur_jpg.php:10) in /users/icetigers/www/bild/signatur_jpg.php on line 14[/FONT]
liegt das einfach daran, dass schon vor der Ausgabe des Bildes irgendeine ausgabe stattgefunden hat. das kann zB der Fall sein, wenn "<?.." nicht das allererste in deinem script ist. selbst ein leerzeichen vor dem "<" führt dazu.
die Fehlermeldung
[FONT=Verdana,sans-serif]Fatal error: Call to undefined function ImageCreateFromJPG() in /users/icetigers/www/bild/signatur_jpg.php on line 21[/FONT]
rührt einfach daher, dass[FONT=Verdana,sans-serif] ImageCreateFromJPG() keine funktion ist, die richtige Schreibweise wäre imagecreatefromjpeg().

[/FONT]Irgendjmd eine Idee was ich ändern muss oder denkt ihr das liegt an Funpic?
[FONT=Verdana,sans-serif]welche Möglichkeiten deine GD unterstützung hat,kannst du über http://www.php.net/manual/en/function.gd-info.php nachprüfen

[/FONT]
 
Zuletzt bearbeitet:

Chriss1987

me.drinkCoffee();

AW: Frage zu Tut: "Dynamisches Signaturbild mit Transparenz"

Hi,

wie ist die Datei codiert? Ich hatte erst gestern das Problem, dass diese Fehlermeldung auf manchen Servern auftauchte, wenn die Datei mit "UTF-8 mit BOM" codiert ist!

Warning: Cannot modify header information - headers already sent by (output started at /users/icetigers/www/bild/signatur_jpg.php:10) in /users/icetigers/www/bild/signatur_jpg.php on line 14

Wenn ich das bei mir teste, funktioniert das soweit, bis auf die Textausgabe...

Schöne Grüße aus dem Sauerland!
Chriss
 

IceTigers

Noch nicht viel geschrieben

AW: Frage zu Tut: "Dynamisches Signaturbild mit Transparenz"

Erstmal danke für eure Antworten!
Habe jetzt meinen Code angepasst: Leerzeichen vor <?PHP gelöscht und JPG jeweils durch JPEG ersetzt.
Wenn ich jetzt meine signatur_jpeg.php im Browser öffne, wird mir allerdings nur das Hintergrundbild angezeigt...es wird also kein Text "auf" das Bild geschrieben.

gd_info() liefert mir folgendes Ergebniss:
array(12) { ["GD Version"]=> string(27) "bundled (2.0.34 compatible)" ["FreeType Support"]=> bool(true) ["FreeType Linkage"]=> string(13) "with freetype" ["T1Lib Support"]=> bool(true) ["GIF Read Support"]=> bool(true) ["GIF Create Support"]=> bool(true) ["JPEG Support"]=> bool(true) ["PNG Support"]=> bool(true) ["WBMP Support"]=> bool(true) ["XPM Support"]=> bool(false) ["XBM Support"]=> bool(true) ["JIS-mapped Japanese Font Support"]=> bool(true) }
JPEG wird also unterstützt, aber das hab ich jetzt schon gemerkt.
Der Code der den Text "auf" das Bild schreibt ist aber 1:1 aus dem Tutorial übernommen. Ich hab das jetzt bei funpic, bplaced und lima-city ausprobiert und es gibt bei allen drein das gleiche Ergebniss: Man sieht nur das Hintergrundbild. :(
D.h. doch eigentlich das ein Fehler im Code vorhande sein muss??

Hier nochmal der komplette Code:
Code:
<?php

//DynSig.php -- dynamisch Signatur mit Text erzeugen

    Header("Content-type: image/jpeg");

    $ausgangsbild = "ursprung.jpeg"; // Pfad zum Bild
    $groesse_ausgangsbild = GetImageSize($ausgangsbild);
    $breite_ausgangsbild=$groesse_ausgangsbild[0];
    $hoehe_ausgangsbild=$groesse_ausgangsbild[1];
    
    $ausgangsbild = ImageCreateFromJPEG($ausgangsbild);
    if(!$ausgangsbild) // Fehler, falls Bild nicht geöffnet werden konnte
    {
      die("Ausgangsbild konnte nicht geöffnet werden");
    }

    $schriftgroesse=8;
    $x=70; //Startwert für XPosition des Textes
    $y=55; //Startwert für YPosition des Textes
    $text = array("PSD-Tutorials.de Fan",
                  "Meine Hand mag die andere",
                  "samy is my hero");
  
    $ausgabetext=$text[rand(0,sizeof($text)-1)];

    $stringlaenge=strlen($ausgabetext);
    $stringbreite=$stringlaenge*$schriftgroesse+$x;

    if($stringbreite < $breite_ausgangsbild)  //Wenn der Text zu schmal ist, ein Bildbreitenminimum festlegen
    {
      $stringbreite = $breite_ausgangsbild;
    }

    $zielbild = ImageCreate($stringbreite, $hoehe_ausgangsbild) or die("Kein Bild erzeugt!"); // Zielbild erstellen
    ImageColorAllocate($zielbild, 236,233,216); //Hintergrundfarbe festlegen

    $schriftfarbe = ImageColorAllocate($zielbild, 19, 51,130);
    imagettftext($zielbild,$schriftgroesse*72/96,0,$x,$y,-1*$schriftfarbe,"schriftart.ttf",$ausgabetext);
  
    ImageCopyMerge($zielbild,$ausgangsbild,0,0,0,0,$breite_ausgangsbild,$hoehe_ausgangsbild,100);

    ImageJPEG ($zielbild) or die("Endbild nicht erzeugt!"); // Bild ausgeben
    Imagedestroy ($zielbild); // make me scream "yeah"
?>
 

sokie

Mod | Web

AW: Frage zu Tut: "Dynamisches Signaturbild mit Transparenz"

liegt denn deine "schriftart.ttf" auch da wo sie liegen soll?
ich vermute mal, dass du schriftart.ttf nicht durch die gewünschte schriftart rersetzt hast, und die entsprechende Schriftartdatei nicht auf dem Server ist.
 

saila

Moderatorle

AW: Frage zu Tut: "Dynamisches Signaturbild mit Transparenz"

Hi,

versuch mal das auf dem Server auszuführen: PHP: imagettftext - Manual
Passe das ganze bzgl. JPG und Schriftdatei an. Wenn es funzt, ist deine Schriftdatei vorhanden und der Fehler liegt wo anderst.
 

IceTigers

Noch nicht viel geschrieben

AW: Frage zu Tut: "Dynamisches Signaturbild mit Transparenz"

liegt denn deine "schriftart.ttf" auch da wo sie liegen soll?
ich vermute mal, dass du schriftart.ttf nicht durch die gewünschte schriftart rersetzt hast, und die entsprechende Schriftartdatei nicht auf dem Server ist.

Ich hab eine Schriftart hochgeladen und sie schriftart.ttf genannt. Bin mir ganz sicher (siehe unten).

Hi,
versuch mal das auf dem Server auszuführen: PHP: imagettftext - Manual
Passe das ganze bzgl. JPG und Schriftdatei an. Wenn es funzt, ist deine Schriftdatei vorhanden und der Fehler liegt wo anderst.

Ja funktioniert einwandfrei! Siehe:

(ich weiß die Schrift ist nicht gerade lesbar^^)


Ich habe jetzt den Code ein bisschen verändert:
Code:
<?php
Header ("Content-type: image/jpeg");
$im = [B]ImageCreateFromJPEG ("ursprung.jpeg");[/B]
$black = ImageColorAllocate ($im, 0, 0, 0);
$white = ImageColorAllocate ($im, 255, 255, 255);
ImageTTFText ($im, 20, 0, 10, 20, $white, "schriftart.ttf",
"Teste... Omega: Ω");
ImageJpeg ($im);
ImageDestroy ($im);
?>
Funktioniert auch einwandfrei:


D.h Schriftart ist vorhanden, Ursprungbild ist vorhanden ud beides kann auch verwendet werden.
Aber d.h. auch dass in dem andere Code noch irgendein Fehler stecken muss. Findet jmd den Fehler?
Ansonsten muss ich halt mit dieser Version weiterarbeiten ;)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben