Я ищу способ изменить размер изображения на стороне клиента с помощью JavaScript (действительно изменить размер, а не только изменить ширину и высоту).
Я знаю, что это возможно сделать во Flash, но я хотел бы избежать этого, если это возможно.
Есть ли где-нибудь в Интернете алгоритм с открытым исходным кодом?
javascript
image
resize
client-side
Geraud
источник
источник
Ответы:
Вот суть, которая делает это: https://gist.github.com/dcollien/312bce1270a5f511bf4a
(версия es6 и версия .js, которые могут быть включены в тег скрипта)
Вы можете использовать его следующим образом:
Он включает в себя множество обнаружений поддержки и полифилов, чтобы убедиться, что он работает на максимально возможном количестве браузеров.
(он также игнорирует GIF-изображения - в случае, если они анимированы)
источник
imageSmoothingEnabled
как true` иimageSmoothingQuality
tohigh
. В машинописи этот блок выглядит так:const ctx = canvas.getContext('2d'); ctx.imageSmoothingEnabled = true; (ctx as any).imageSmoothingQuality = 'high'; ctx.drawImage(image, 0, 0, width, height);
Ответ на этот вопрос - да - в HTML 5 вы можете изменять размеры изображений на стороне клиента, используя элемент canvas. Вы также можете взять новые данные и отправить их на сервер. Смотрите этот урок:
http://hacks.mozilla.org/2011/01/how-to-develop-a-html5-image-uploader/
источник
Если вы изменяли размер перед загрузкой, я узнал об этом http://www.plupload.com/
Это делает всю магию для вас любым мыслимым способом.
К сожалению, только изменение размера HTML5 поддерживается браузером Mozilla, но вы можете перенаправить другие браузеры на Flash и Silverlight.
Я только что попробовал, и он работал с моим Android!
Я использовал http://swfupload.org/ во флэш-памяти, он отлично справляется со своей задачей, но размер изменения очень мал. (не могу вспомнить предел) и не возвращается к html4, когда флэш-память недоступна.
источник
http://nodeca.github.io/pica/demo/
В современном браузере вы можете использовать canvas для загрузки / сохранения данных изображения. Но вы должны иметь в виду несколько вещей, если вы изменяете размер изображения на клиенте:
источник
Возможно с тэгом canvas (хотя он не переносимый). Там в блоге о том , как повернуть изображение с холста здесь , я полагаю , что если вы можете повернуть его, вы можете изменить его размер. Может быть, это может быть отправной точкой.
Смотрите также эту библиотеку .
источник
Вы можете использовать инфраструктуру обработки изображений javascript для обработки изображений на стороне клиента перед загрузкой изображения на сервер.
Ниже я использовал MarvinJ для создания исполняемого кода на основе примера на следующей странице: «Обработка изображений на стороне клиента перед его загрузкой на сервер»
В основном я использую метод Marvin.scale (...), чтобы изменить размер изображения. Затем я загружаю изображение в виде блоба (используя метод image.toBlob () ). Сервер отвечает обратно, предоставляя URL полученного изображения.
источник
Да, с современными браузерами это вполне выполнимо. Даже выполнимо до такой степени, что файл загружается специально как двоичный файл, сделав любое количество изменений холста.
http://jsfiddle.net/bo40drmv/
(этот ответ является улучшением принятого ответа здесь )
Имея в виду, чтобы обработать представление результатов в PHP с чем-то похожим на:
Если вас беспокоит точка зрения Виталия, вы можете попробовать немного обрезать и изменить размер рабочего jfiddle.
источник
По моему опыту, этот пример был лучшим решением для загрузки изображения с измененным размером: https://zocada.com/compress-resize-images-javascript-browser/
Он использует функцию HTML5 Canvas.
Код такой же «простой», как этот:
У этой опции есть только один недостаток, связанный с поворотом изображения из-за игнорирования данных EXIF. Над чем я сейчас работаю. Буду обновлять после того, как я закончу с этим.
Другим недостатком является отсутствие поддержки IE / Edge, над которой я тоже работаю. Хотя есть информация в ссылке выше. По обоим вопросам.
источник