Загрузить файл изображения: возможно ли сжатие на стороне клиента?

9

При предложении выгрузки файлов фотографий, как правило, пользователь будет иметь сильно сжатые и огромные (10+ мегапикселей) файлы JPEG со своих камер или телефонов. На стороне сервера эти файлы будут повторно сжаты до чего-то вроде 800x600px и качества JPEG 7 или 8.

Возможно ли (уже) сделать это повторное сжатие на стороне клиента? Так что мне нужно было бы передать только около 100 КБ (800x600 пикселей), а не 3 МБ или больше. Что-то вроде:

(1) С новым API-интерфейсом FileSystem javascript ( http://slides.html5rocks.com/#filewriter ) можно будет считывать данные файла фотографии в JS на стороне клиента.

(2) Тогда было бы необходимо перекодировать данные JPEG, что возможно, но я не могу найти никакой библиотеки для этого (пока). Кто-нибудь знает такую ​​библиотеку?

(3) Последним шагом будет отправка повторно сжатых данных JPEG на серверную сторону для хранения и получение URL-адреса сохраненного файла фотографии с сервера для включения в HTML-код клиента.

Я ищу какой-нибудь плагин jQuery, другую библиотеку JS или пример веб-страницы, которая делает это.

Крис
источник
Можно ли оптимизировать / сжать изображения перед загрузкой? Вопрос на StackOverflow представляет несколько возможных решений.
danlefree

Ответы:

4

Plupload поддерживает изменение размеров изображений в формате html5 и их последующую загрузку, а также имеет запасные варианты для неподдерживаемых браузеров ( кашель IE ) во Flash, Silverlight (и устаревших материалах, таких как Google Gears и BrowserPlus).

Крис Эриксон
источник
2

Вы можете загрузить изображение на элемент canvas, изменить его размер и затем вернуть изображение обратно, чтобы загрузить его.

ZippyV
источник
О том, как это сделать, см. Stackoverflow.com/questions/923885/…
Ильмари Каронен,
2

Проверьте это демо: http://makeitsolutions.com/labs/jic

Это библиотека javascript, созданная мной, которая решает эту проблему.

Это позволяет вам сжимать jpg и png на стороне клиента на 100% с помощью javascript и не требует никаких внешних библиотек!

brunobar79
источник