menatwork-ia / valumsFileUploader

Contao Extension :: Multiple file uploader without flash
http://www.contao.org/erweiterungsliste/view/valumsFileUploader.html
11 stars 3 forks source link

ClientSide Image-Scaling #28

Open backbone87 opened 12 years ago

backbone87 commented 12 years ago

Mir ist grad so ne Idee gekommen wie man den ganzen "Ich hab zuwenig Speicher auf meinem Server um meine 20 Megapixel Digicam Bilder zu skalieren!" oder "Ich brauche ne halbe Ewigkeit um meine 100 Bilder á 20 Megapixel hochzuladen!"-Kram abschaffen kann.

HTML5 FileAPI + Canvas

Vorgehensweise:

Die Standard-Bild-Maximal-Größe für Uploads kann man vorgeben (wie jetzt auch), aber auch via Reiter "Experten-Konfiguration" Individuell anpassen (um automatisches Skalieren zu verhindern).

Ein paar Ressourcen zu dem Thema: http://www.nihilogic.dk/labs/canvas2image/ http://stackoverflow.com/questions/371875/local-file-access-with-javascript http://stackoverflow.com/questions/4761711/local-image-in-canvas-in-chrome http://www.html5rocks.com/en/tutorials/file/filesystem/ http://www.html5rocks.com/en/tutorials/file/dndfiles/

PS: Wenn toDataURL nicht klappt, könnte man auch Pixel für Pixel aus der Canvas auslesen, das Zippen, an den Server schicken, da wieder Pixel für Pixel in ne GD Canvas zeichnen und damit dann die Format Speicherung durchführen (gegebenenfalls mit PNG FilterOptimierung blablub)

psi-4ward commented 12 years ago

Das klingt mir grad etwas zu easy ;)

backbone87 commented 12 years ago

Ja aber die FileAPI nutzen die doch sowieso schon, man kann nen FileBlob b64 konvertieren und b64 Bilder kann man in ne Canvas schreiben. Das einzige was etwas komplizierter wird, ist die Bildgröße aus dem Bildblob auszulesen, aber selbst das kann man sicher aus Java/PHP/... copy pasten für JS. Und wie gesagt Canvas.toDataURL support ist in Chrome und FF drinne (vll auch noch weitere) und selbst wenn hätte ich dafür ne alternative aufgezeigt. So schwer scheint das echt nicht zu sein :D