Показать сообщение отдельно
  #6 (permalink)  
Старый 28.06.2020, 20:29
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Katy93,

тебе надо уменьшить картинку, чтобы она вписалась в некоторый прямоугольник?

сначала вычисляем целевые размеры картинки:
function resizeToBounds(imgW, imgH, boundsW, boundsH) {
    if (imgW <= boundsW && imgH <= boundsH) {
        return null;
    }
    var rw = boundsW / imgW;
    var rh = boundsH / imgH;
    var r = Math.min(rw, rh);
    return {
        width: Math.round(imgW * r),
        height: Math.round(imgH * r)
    };
}


если это вернет null, то уменьшать не надо.

иначе создаем вспомогательную канву с такими размерами, кидаем на неё картинку методом drawImage с кучей параметров - 3 вариант отсюда https://developer.mozilla.org/ru/doc...xt2D/drawImage

потом просто сохраняем вспомогательную канву.

кстати у канвы есть метод toBlob, обычно он более подходящий чем toDataURL
Ответить с цитированием