При предложении выгрузки файлов фотографий, как правило, пользователь будет иметь сильно сжатые и огромные (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 или пример веб-страницы, которая делает это.
источник
Ответы:
Plupload поддерживает изменение размеров изображений в формате html5 и их последующую загрузку, а также имеет запасные варианты для неподдерживаемых браузеров ( кашель IE ) во Flash, Silverlight (и устаревших материалах, таких как Google Gears и BrowserPlus).
источник
Вы можете загрузить изображение на элемент canvas, изменить его размер и затем вернуть изображение обратно, чтобы загрузить его.
источник
Проверьте это демо: http://makeitsolutions.com/labs/jic
Это библиотека javascript, созданная мной, которая решает эту проблему.
Это позволяет вам сжимать jpg и png на стороне клиента на 100% с помощью javascript и не требует никаких внешних библиотек!
источник