• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

imagegetttftext erzeugt keine Ausgabe

J

j-l-n

Guest
Mit folgendem Skript soll Text auf ein Hintergrundbild geschrieben werden:

PHP:
<?php

ini_set('display_errors', 'Off');
ini_set("gd.jpeg_ignore_warning", 1);
error_reporting(-1);

require 'debug/class.debug.php';
debug::log('debug/bericht.html',true);
debug::write('start:  ',__FILE__);

//PHP als Bilddatei an Browser senden
header("Content-type: image/jpeg");
 
$string = "test";

//Schriftarten, Farbe & Hintergrund festlegen + Bild erzeugen
$fonts = array( "zachary.ttf", "mtcorsva.ttf", "gilligan.ttf");

$background = imagecreatefromjpeg( "background.jpg" );

$color = imagecolorallocate($background, 0, 125, 0 );


$font_size = 12;
$angle = 0;
$t_x = 10;
$t_y = 12;

//Bild zusammenbauen
imagettftext($background, $font_size, $angle, $t_x, $t_y, $color, $fonts[0], $string);


imagejpeg($background);
imagedestroy($background);

?>

Angezeigt wird nur ein grauer Kasten.
 
Zuletzt bearbeitet:
Da hilft nur Debuggen. Nur wenn das PHP Script eine Grafik erzeugen soll, zerstört jede Fehlerausgabe/Notiz die Grafik.
Ein Ausweg ist die Displayausgabe der Fehler zu unterdrücken und alle Informationen in eine Datei zu schreiben.

PHP:
ini_set('display_errors', 'Off');  //Displayausgabe aus
error_reporting(-1);	//max. aufgedreht

require 'class.debug.php';  ////Doc & free Download jspit.de
debug::log('debug.html',true);  //Alle Infos in debug.html
debug::write('start: ',__FILE__);

//eigener script
header("Content-type: image/jpeg");
//  :

Die eigenen Ausgaben sowie die Fehler werden nach Ausführung des eigenen Scriptes durch Aufruf von debug.html im Browser angezeigt.

Viel Spass beim Debuggen.

jspit
 
Danke dir für dein tolles Debug-Skript, jspit - ist wirklich gut und ich werde es ab sofort auch für andere Fehlersuchen verwenden! :icon7:

Folgende Meldungen:
[01-Feb-2014 13:00:12 America/New_York] PHP Warning: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error: in bild.php on line 19

[01-Feb-2014 13:00:12 America/New_York] PHP Warning: imagecreatefromjpeg(): 'background1.jpg' is not a valid JPEG file in bild.php on line 19

[01-Feb-2014 13:00:12 America/New_York] PHP Warning: imagecolorallocate() expects parameter 1 to be resource, boolean given in bild.php on line 21

[01-Feb-2014 13:00:12 America/New_York] PHP Warning: imagettftext() expects parameter 1 to be resource, boolean given in bild.php on line 30

[01-Feb-2014 13:00:12 America/New_York] PHP Warning: imagejpeg() expects parameter 1 to be resource, boolean given in bild.php on line 33

[01-Feb-2014 13:00:12 America/New_York] PHP Warning: imagedestroy() expects parameter 1 to be resource, boolean given in bild.php on line 34
 
Zuletzt bearbeitet:
Der erste Fehler produziert dann auch die folgenden, richtig? Denn dadurch ist dann die Bildressource nicht korrekt und daher gibt's Folgefehler daraus. :(
Allerdings verstehe ich den ersten Fehler nicht: das verwendete Bild ist ganz sicher ein korrektes Image im JPEG-Format mit Endung *.jpg...
 
Habe mittlerweile noch etwas getestet, ist aber ebenfalls negativ: Evtl. hätte ja irgendwas mit GD nicht stimmen können, aber das Modul ist aktiviert:

58874-imagegetttftext-erzeugt-keine-ausgabe.jpg
 
Zuletzt bearbeitet:
Die Fehlermeldung
[01-Feb-2014 13:00:12 America/New_York] PHP Warning: imagecreatefromjpeg(): 'background1.jpg' is not a valid JPEG file in bild.php on line 19
sagt doch schon fast alles:
1. Warning: imagecreatefromjpeg(): -> diese Funktion meldet dies, dafür muß imagecreatefromjpeg und die GD-Lib ja vorhanden sein!

2. 'background1.jpg' is not a valid JPEG file -> stimmt schon mal nicht mit dem gezeigten Code überein, dort sehe ich keine 1 im Namen.
Wirkt jetzt Oberlehrerhaft, aber hier ist ein wenig mehr Sorgfalt angebracht.

3. is not a valid JPEG file -> Es wird wohl etwas (eine Datei) gefunden, diese enthält aber kein für die GD-Lib gültiges JPG. Die Dateiendung ist dabei unerheblich.

Tipp: Erstell dir mit einen möglicht einfachen Tool (Paint o.ä.) eine background.jpg zu Testen + probier erstmal damit.
Wenn dies funktioniert, kannst du weiter 'forschen' warum er dein background nicht mag.

LG jspit
 
'background1.jpg' is not a valid JPEG file -> stimmt schon mal nicht mit dem gezeigten Code überein, dort sehe ich keine 1 im Namen.
Wirkt jetzt Oberlehrerhaft, aber hier ist ein wenig mehr Sorgfalt angebracht.

Ja, entschuldige. Das kommt daher, das da zwei Versionen parallel im Umlauf waren -> ab sofort kannst du von der bild.php ausgehen, dass die die richtige ist.
 
Um nun nochmal alles auf den selben Stand zu bringen:

aktuelle Version von image.php
PHP:
<?php

ini_set('display_errors', 'Off');
ini_set("gd.jpeg_ignore_warning", 1);
error_reporting(-1);

require 'debug/class.debug.php';
debug::log('debug/bericht.html',true);
debug::write('start:  ',__FILE__);

//PHP als Bilddatei an Browser senden
header("Content-type: image/jpeg");
 
$string = "test";

//Schriftarten, Farbe & Hintergrund festlegen + Bild erzeugen
$fonts = array( "zachary.ttf", "mtcorsva.ttf", "gilligan.ttf");

$background = imagecreatefromjpeg( "background.jpg" );

$color = imagecolorallocate($background, 0, 125, 0 );


$font_size = 12;
$angle = 0;
$t_x = 10;
$t_y = 12;

//Bild zusammenbauen
imagettftext($background, $font_size, $angle, $t_x, $t_y, $color, $fonts[0], $string);


imagejpeg($background);
imagedestroy($background);

?>

Onlineversion mit gesamten Projektdateien: Link entfernt
 
Zuletzt bearbeitet:
Wenn ich auf dein background.jpg klicke bekomme ich einen Fehler: Die Grafik kann nicht angezeigt werden, da sie Fehler enthält.
 
Hab mal ein Screenshot hochgeladen, vom FF-aufruf. Auch keine Anzeige im IE11, auch im W7 nach Download nicht.
Einzig Chrome zeigt die Grafik bei mir ohne Probleme an. Für mich liegt es am Grafikformat, bin aber alles andere als ein Spezialist auf den Gebiet.

Womit wurde denn die Grafik erzeugt?
 

Anhänge

  • error.jpg
    error.jpg
    24,8 KB · Aufrufe: 3
Zuletzt bearbeitet:
Einzig Chrome zeigt die Grafik bei mir ohne Probleme an.

Ah... Ich benutze nämlich Chrome - deswegen wird die bei mir auch ganz normal angezeigt.

Den Hintergrund habe ich von einer Website mit "Bild speichern" runtergeladen - wird auch unter Win7 bei mir korrekt angezeigt...
 
PERFEKT! Das Problem war tatsächlich die Bilddatei - warum auch immer die von Chrome korrekt angezeigt wird und von den anderen nicht...
Habe jetzt ein anderes Bild verwendet und es klappt einwandfrei!
 
Zuletzt bearbeitet:
Zurück
Oben