Как уменьшить размеры изображения перед отправкой на сервер?

На сайт иногда нужно загружать фотографии. Если загружать сразу по несколько штук размером ~2000*1000px, то скрипт на сервере выдает ошибку нехватки памяти. Вообще говоря, нет необходимости передавать такие большие изображения.
Как в браузере уменьшить размер изображения, скажем, до 700px по максимальной стороне? Через canvas, или есть более простые решения?
  • Вопрос задан
  • 1839 просмотров
Решения вопроса 1
scapp
@scapp
JS фрилансер
https://hacks.mozilla.org/2011/01/how-to-develop-a...
var MAX_WIDTH = 800;
var MAX_HEIGHT = 600;
var width = img.width;
var height = img.height;
 
if (width > height) {
  if (width > MAX_WIDTH) {
    height *= MAX_WIDTH / width;
    width = MAX_WIDTH;
  }
} else {
  if (height > MAX_HEIGHT) {
    width *= MAX_HEIGHT / height;
    height = MAX_HEIGHT;
  }
}
canvas.width = width;
canvas.height = height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);
var dataurl = canvas.toDataURL("image/png");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
Через флеш
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы