Oferując przesyłanie plików zdjęć, zwykle użytkownik ma źle skompresowane i ogromne (ponad 10 megapikseli) pliki JPEG ze swoich aparatów lub telefonów. Po stronie serwera pliki te zostaną ponownie skompresowane do formatu 800 x 600 pikseli i jakości JPEG 7 lub 8.
Czy (już) jest to możliwe, aby wykonać tę kompresję po stronie klienta? Tak więc musiałbym przesłać jedynie 100 kB (800 x 600 pikseli), a nie 3 MB lub więcej. Coś jak:
(1) Dzięki nowemu interfejsowi API FileSystem API javascript ( http://slides.html5rocks.com/#filewriter ) możliwe byłoby odczytanie danych pliku zdjęcia do JS po stronie klienta.
(2) W takim razie konieczne byłoby ponowne zakodowanie danych JPEG, co jest możliwe, ale nie znalazłem żadnej biblioteki do tego (jeszcze). Czy ktoś zna taką bibliotekę?
(3) Ostatnim krokiem byłoby wysłanie ponownie skompresowanych danych JPEG po stronie serwera w celu przechowywania i uzyskanie adresu URL zapisanego pliku zdjęcia z powrotem z serwera w celu włączenia go do kodu HTML klienta.
Szukam wtyczki jQuery, innej biblioteki JS lub przykładowej strony internetowej, która to robi.
źródło
Odpowiedzi:
Plupload obsługuje zmianę rozmiaru html5 obrazów, a następnie ich przesyłanie, ma również awarie dla nieobsługiwanych przeglądarek ( kaszel IE ) we Flashu, Silverlight (i przestarzałych rzeczach, takich jak Google Gears i BrowserPlus).
źródło
Możesz załadować obraz do elementu canvas, zmienić jego rozmiar, a następnie odzyskać obraz, aby go załadować.
źródło
Sprawdź to demo: http://makeitsolutions.com/labs/jic
To utworzona przeze mnie biblioteka javascript, która rozwiązuje ten problem.
Pozwala kompresować pliki jpg i png po stronie klienta w 100% za pomocą javascript i nie wymaga zewnętrznych bibliotek!
źródło