GD-Lib, wie kann man Thumbnail im File speichern?
Thomas Schmieder
- php
Hallo,
was muss ich machen, um ein größeres Bild zu einem kleineren umzuwandeln und das dann in einer Datei zu speichern? Ich habe da nur die Funktion jpg2wbmp gefunden, will doch aber das Format nicht ändern.
Grüße
Tom
Hallo,
was muss ich machen, um ein größeres Bild zu einem kleineren umzuwandeln und das dann in einer Datei zu speichern? Ich habe da nur die Funktion jpg2wbmp gefunden, will doch aber das Format nicht ändern.
hilft http://www.heise.de/ix/artikel/2002/05/078/ Dir weiter?
Gruss
Thomas
Hi Thomas,
danke für den Tipp. Der Link ist noch ganz interessant für das System, das wir Samstag zusammennageln wollen. Da dard die GD-Lib nicht fehlen.
Bezüglich der Speicherung habe ich es inziwschen gefunden und eine kleine Funktion erstellt, die ich dann auch zur Diskussion stelle.
function makethumb($picname,$thumbname,$thumbwidth)
{
### hier müssen noch die anderen unterstützten Formate
### eingebaut werden.
$imgdata=getimagesize($picname); //fragen, ob es jpg ist
if ($imgdata[2]==2)
{
$src_img=ImageCreatefromjpeg($picname);//Quellbild i Speicher auspacken
$qx=imagesx($src_img); //Maße des Quellbides bestimmen
$qy=imagesy($src_img);
$tx=$thumbwidth; //Breite des Zielbildes feslegen
$ty=($thumbwidth/$qx)*$qy; //Höhe des Zielbildes berechnen
$dst_img=imagecreate($tx,$ty); //Zielbild im Speicher vorbereiten
//Zielbild erzeugen
imagecopyresized($dst_img,$src_img,0,0,0,0,$tx,$ty,$qx,$qy);
imagejpeg($dst_img,$thumbname); //Zielbild speichern
imagedestroy($src_img); //Arbeitsspeicher für Arbeits-
imagedestroy($dst_img); //kopien der Bilder freigeben.
}
else
{
echo "kein JPEG-Format: $imgdata[2]<br>";
}
}
Insbesondere würde mich interessieren, ob man die Werte, die getimagesize($picname) liefert gleich weiterverwenden darf oder ob man lieber nochmal mit imagesx($src_img) und imagesy($src_img) nachfragt, wie groß das Bild im Arbeitsspeicher dann ist.
Außerdem wüßte ich gerne, ob man die GIF-Funktionalität irgendwie dazukaufen kann. Es wäre ja nichts dagegen einzuwenden, eine modereate Lizenzgebühr an Unisys (oder wie die heißen...) zu zahlen.
Kann mir da jemand Tipps geben?
Liebe Grüße aus http://www.braunschweig.de
Tom
Moin!
Bei deiner Funktion willst du doch bestimmt lieber imagecopyresampled() verwenden. Ist nämlich qualitativ wesentlich besser.
Insbesondere würde mich interessieren, ob man die Werte, die getimagesize($picname) liefert gleich weiterverwenden darf oder ob man lieber nochmal mit imagesx($src_img) und imagesy($src_img) nachfragt, wie groß das Bild im Arbeitsspeicher dann ist.
Ich wüßte nicht, was dagegen spricht. Die Quelle der Werte ist identisch: Das Bild.
Außerdem wüßte ich gerne, ob man die GIF-Funktionalität irgendwie dazukaufen kann. Es wäre ja nichts dagegen einzuwenden, eine modereate Lizenzgebühr an Unisys (oder wie die heißen...) zu zahlen.
Als universelles Skript-Bildbearbeitungsprogramm solltest du für deine Zwecke lieber ImageMagick einsetzen. Das kann auch GIFs verarbeiten und produziert angeblich noch schönere Ergebnisse.
Läßt sich von PHP auch prima als externes Programm aufrufen.
- Sven Rautenberg