[Problem] imagecreatefromjpeg

Anubia

Mitglied
Hallo,

ich habe ein Problem mit dem Befehl "imagecreatefromjpeg".
Wenn ich jpg Dateien verwende, zeigt er mir nur kryptische Zeichen an anstatt ein Bild.

In der GD-Lib ist soweit alles aktiviert:

GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.2
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XPM Support enabled
XBM Support enabled
JIS-mapped Japanese Font Support enabled

Hier das Script:

PHP:
$startbild_pfad="bilder/".$startbild.".jpg";
$startbild_size=getimagesize($startbild_pfad);
$startbild_breite=$startbild_size[0];
$startbild_hoehe=$startbild_size[1];
$startbild_tumb_breite=100;
$startbild_tumb_hoehe=intval($startbild_hoehe*$startbild_tumb_breite/$startbild_breite);

$startbild_orig=imagecreatefromjpeg($startbild_pfad);
$startbild_thumb=imagecreatetruecolor($startbild_tumb_breite,$startbild_tumb_hoehe);
imagecopyresized($startbild_thumb,$startbild_orig,0,0,0,0,$startbild_tumb_breite,$startbild_tumb_hoehe,$startbild_breite,$startbild_hoehe);

echo "<img src='".imagejpeg($startbild_thumb)."'  style='margin:0px; padding:0px; overflow:hidden; width:100px;' lowsrc='bilder/root/wait.gif' alt='".$row[bezeichnung]."' border=0>";

Vielleicht stand jemand schon einmal vor dem selbigen Problem.

VG
anubia
 
Dir fehlt eine Anweisung um dem Browser zu sagen, was für ein Datentyp kommt.

PHP:
header('Content-Type: image/jpeg');

Am besten an den Anfang des Dokumentes.
 
Verdammt leider immer noch keine Veränderung.

Ich habe eben noch gelesen, dass dieses "imagecreatefromjpeg" sehr speicherlastig ist,
gibt es daher eine Möglichkeit die Datei, die OnTheFly geschrieben werden soll in einem bestimmten Verzeichnis als .jpg abzuspeichern?

Vielleicht hat jemand ein kleines Script für mich parat?

if(!file_exists("bilder/thumb/".$startbild.".jpg")
{

erstelle Thumbnail aus Datei bilder/".$startbild.".jpg" und kopiere in Verzeichnis bilder/thumb/.

}

Danke dir Felix für deine schnelle Hilfe.
 
PHP:
header('Content-Type: image/jpeg');
$startbild_pfad="bilder/".$startbild.".jpg";
$startbild_size=getimagesize($startbild_pfad);
$startbild_breite=$startbild_size[0];
$startbild_hoehe=$startbild_size[1];
$startbild_tumb_breite=100;
$startbild_tumb_hoehe=intval($startbild_hoehe*$startbild_tumb_breite/$startbild_breite);

$startbild_orig=imagecreatefromjpeg($startbild_pfad);
$startbild_thumb=imagecreatetruecolor($startbild_tumb_breite,$startbild_tumb_hoehe);
imagecopyresized($startbild_thumb,$startbild_orig,0,0,0,0,$startbild_tumb_breite,$startbild_tumb_hoehe,$startbild_breite,$startbild_hoehe);

imagejpeg($startbild_thumb);

Sorry, hatte das Skript nicht zu bis zum Ende gelesen.
Die PHP Datei muss das Bild direkt ausgeben, du kannst es nicht so in HTML einbetten, dafür müsstest du andere Methoden verwenden. (SelfHTML - Inline Images)

[phpf]imagejpeg[/phpf] erwartet als zweiten optionalen Parameter einen Dateinamen.
 
Okay ich habe meinen Fehler gefunden.
Nachdem ich meinen Code noch ein wenig verfeinert habe und in einer leeren php -Datei getestet habe funktionierte dieser einwandfrei.

Nachdem ich Header Informationen eingefügt habe hat dieser wieder nicht funktioniert.
Also das Problem waren die Header Daten und die Inline Grafik.

Folgendes -> die Lösung
Code für die Thumbnailerstellung auslagern in eine separate z.B. thumbnail.php Datei.

Dann einfach wo ein Thumbnail gebraucht wird

HTML:
<img src="PFAD_ZUR_THUMBNAIL_DATEI.php?thumb=PFAD_ZUM_QUELLBILD.jpg">

Hier der Code den ich für die Erstellung der Thumbnails geschrieben habe vielleicht hilft es dem einen oder anderen mal.

PHP:
$breit=100;
$quellbild=urldecode($_GET[thumb]);
$info=getimagesize($quellbild);

$breit_alt=$info[0];
$hoch_alt=$info[1];
$hoch_neu=ceil($hoch_alt*$breit/$breit_alt);

$bild_alt=imagecreatefromjpeg($quellbild);

$thumbnail = imagecreate($breit , $hoch_neu);
imagecopyresized($thumbnail , $bild_alt , 0,0,0,0, $breit , $hoch_neu , $breit_alt , $hoch_alt);
header("Content-Type: image/jpeg");
$file_neu=imagejpeg($thumbnail,"",30);
imagedestroy($thumbnail);
imagedestroy($bild_alt);
 
Statt

imagejpeg($startbild_thumb);

einfach

imagejpeg($startbild_thumb, $dir.'/'.$startbild_thumb, 90);

// EDIT

War wohl einer schneller als ich :D
 
Zurück