User since
2005-01-17
14848
Artikel
Admin1
Coden ohne richtige Doku? Dazu sag ich lieber nix.
Schon schlimm, wenn man sowas nutzen muss. Mein Mitgefühl allen, die mit völlig mangelhafter Doku arbeiten müssen.
User since
2005-01-17
14848
Artikel
Admin1
Ganz einfach, ganz oben, du rufst Funktionen auf und prüfst nicht ihre Rückgabewerte.
Lässt du dir alle Fehler etwa von PHP selbst auf der Website ausgeben?
User since
2006-06-09
52
Artikel
BenutzerIn
Ja, die Fehlermeldungen erscheinen jetzt auf der Website selbst. Ganz oben gab es schlicht keine: Ich hatte fälschlicherweise angenommen, eine nicht vorhandene Datei o.ä. würde automatisch aufmerksam gemacht. Das war aber nicht der Fall, so dass ich an einigen Stellen 'die()' eingebaut und so jetzt festgestellt habe, dass ohne URL schon beim Einlesen von $src_file Schluss ist; mit URL komme ich dagegen bis zu 'getimagesize'.
Gruß, Pida
User since
2005-08-17
1420
Artikel
BenutzerIn
Merke: immer Fehler von irgendwelchen Funktionen abfangen. Das macht man überall, auch in PHP so.
Danke für den Hinweis, aber kann denn auch jemand sagen, worin der Fehler in der letzten Zeile besteht?
Gruß, Pida
User since
2005-08-17
1420
Artikel
BenutzerIn
Leider nein, denn die tolle PHP-Doku schweigt sich darüber aus, was da an Fehler vorkommen kann.
Da steht ja nicht mal, was die Funktion im Fehlerfall zurückliefert.
User since
2005-08-17
1420
Artikel
BenutzerIn
http://de2.php.net/manual/de/function.imagecreatef...
Mal groß-, mal kleingeschrieben und als Fehler kriegst du nur einen leeren String zurück.
Das Beispiel zum besseren Debuggen finde ich auch heiß. Um ne saubere Debug-Meldung zu bekommen, bauen wir uns mal fix ein JPG-File, wenn beim Erzeugen eines solchen was schiefgelaufen ist...
User since
2006-06-09
52
Artikel
BenutzerIn
So, hier nun die Lösung des Problems.
Gruß, Pida
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Max. Hoehe und Breite
$width = 200;
$height = 200;
// Quelle angeben
$src_file = imagecreatefromjpeg("http://***/images/test1.jpg") or die ("no such pic"); // hier darf als Pfad nur eine URL stehen
// Neue Masse ermitteln
$size_orig = getimagesize("http://***/images/test1.jpg") or die ("no size information"); // getimagesize($src_file) funktioniert nicht
$width_orig = $size_orig[0] or die ("size");
$height_orig = $size_orig[1] or die ("size");
$ratio_orig = $width_orig/$height_orig or die ("ratio");
if (($width_orig/$height_orig) > $ratio_orig) {
$width = $height_orig*$ratio_orig;
} else {
$height = $width_orig/$ratio_orig;
}
// Neues Bild erstellen
$dest_file = imagecreatetruecolor($width, $height) or die ("no new pic");
// Neues Bild füllen
imagecopyresampled($dest_file, $src_file, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig) or die ("icr");
imageinterlace($dest_file, 1) or die ("interlace"); // Hier muss ein zweites Argument übergeben werden:
// 1 = progressive Darstellung ein, 0 = progressive Darstellung aus
// Output
$dest_name = "images/test.jpg";
imagejpeg($dest_file, $dest_name, 80) or die ("output"); // hier darf an Stelle von $dest_name wohl keinerlei Pfad stehen