beste Methode für Bildupload mit gleichzeitiger Reduzierung der KBs

rernanded

Erfahrenes Mitglied
Hi,
ich suche die beste Methode für Bildupload mit gleichzeitiger Reduzierung der KBs zum Einbau in mein simples Scriptchen. Ist nur für mich intern. Das Ausgangsbild soll aber nicht auf den Server, nur die "kleinere" Version.

Die "kleineren" Versionen müssen webtauglich sein. Es sollen keine Thumbnails werden.

PHP:
<?php
if(isset($_FILES['datei']['tmp_name'])){
move_uploaded_file($_FILES['datei']['tmp_name'], "upload_bilder/".$_FILES['datei']['name']);
}
?>

Moni

PS Frohes Neues.
 
Also du willst an der Auflösung und Dimensionierung nichts ändern? Es soll nur die kleinstmögliche Datei raus kommen? Was bedeutet für dich webtauglich? Wenn da ein Foto mit Dim 4000x3000 pix upgeloadet wird, wäre das in meinen Augen nicht dafür geeignet, es in einer HTML-Seite darzustellen.

Ich würde erst mal festlegen, in welcher Form du die Bilder darstellen willst. Maximierung der Dim und Auflösung auf ein erträgliches Maß. Dann kann man sich darüber Gedanken machen, ob nun JPG, PNG oder ein anderes Format das richtige ist. Evtl. kann man das sogar dynamisch machen, nicht alle PNG sind kleiner als JPG und umgekehrt. Man könnte beim Upload beide Formate erstellen lassen und dann abhängig von der Dateigröße entweder das eine oder das andere wählen.
 
Relativ einfach, Du musst nur ein neues Bild erstellen, die Informationen in die kleinere Version kopieren und abspeichern. Danach löschst Du das Originalbild einfach.

Mit move_uploaded_file würde ich da garnicht arbeiten. Lass es doch einfach im Temp-Verzeichnis liegen und arbeite von da aus.

Folgende Funktionen helfen Dir:
http://www.php.net/manual/de/function.imagecreatefromjpeg.php (das große bild laden)
http://de3.php.net/manual/de/function.imagecreatetruecolor.php (eine kleine version erstellen)
http://de3.php.net/manual/de/function.imagecopyresampled.php (inhalte kopieren)
http://de3.php.net/manual/de/function.getimagesize.php (größen ermitteln)
http://de3.php.net/manual/de/function.imagejpeg.php (neues bild speichern)
http://de3.php.net/manual/de/function.unlink.php (original löschen)
 
@saftmeister und KleinOr

Das Originalbild soll in seinen Dimensionen erhalten bleiben. Also keine Veränderung von BxH.
Nur die dpi (so wird das ja auch bei gängigen Fotoportalen wie clipdealer etc gehandhabt) müssen verändernt werden, fürs Web zB. sind 72 dpi ausreichend.
Was KleinOr angibt kenne ich aus der gdlib ist aber für meinen Kenntnisstand über Bilder zu schwierig und kompliziert. Ich denke es muß doch was Einfaches geben um nur die dpi-Zahl zu senken. Daraus ergibt sich dann auch eine geringere KB-Größe.

Das Ganze sollte für gif, jpg und png gleichermaßen gehen.

Hat jemand Zeilen wie
PHP:
compress_image($source, $destination, 90)
schon mal irgendwo gesehen und genutzt?

Oder was ist mit "imagecopyresized()" oder vllt besser "imagecopyresampled()" ? Letzteres schlägt ja KleinOr auch vor allerdings im Zusammenhang mit "(inhalte kopieren)"?

Moni
 
Zuletzt bearbeitet:
Zurück