Как обрезать лишние холст пространства? - PullRequest
0 голосов
/ 03 мая 2020

Моей первой задачей было подогнать изображение <= высота холста, и я использовал следующий код .. </p>

       var canvas = ctx.canvas ;
       var hRatio = canvas.width  / img.width    ;
       var vRatio =  canvas.height / img.height  ;
       var ratio  = Math.min ( hRatio, vRatio );
       var centerShift_x = ( canvas.width - img.width*ratio ) / 2;
       var centerShift_y = ( canvas.height - img.height*ratio ) / 2;  
       ctx.clearRect(0,0,canvas.width, canvas.height);
       ctx.drawImage(img, 0,0, img.width, img.height,
                          centerShift_x,centerShift_y,img.width*ratio, img.height*ratio);  

Приведенный выше код работает, как я хотел, но когда я загружаю изображение, изображение также содержит пробелы с обеих сторон, если ширина <высота, и пробелы внизу вверху, если ширина> высота.

Пример

Фактическое изображение

   _________
  |  (-.-)  |
  |   \|/   |
  |    |    |
  |   / \   |
  |_________|

Вкл. При сохранении изображение выглядит примерно так

   _______________
  |     (-.-)     |
  |      \|/      |
  |       |       |
  |      / \      |
  |_______________|

Поэтому при сохранении я не сохраняю изображение вместе с пробелами. Пожалуйста, помогите ..

...