Выровняйте изображение на холсте, если ширина изображения больше, чем на холсте - PullRequest
0 голосов
/ 30 октября 2019

У меня есть изображение с соотношением 1724: 1078 (ширина: высота). Теперь мне нужно отцентрировать это изображение внутри холста, который равен 800: 1078. Этот сценарий прекрасно работает с кодом ниже:

ctx.drawImage(this.leftImageResized, ((this.thumbnailWidth/2)-this.leftImageResized.width)/2, (this.thumbnailHeight-this.leftImageResized.height)/2);

Но я не могу понять, как расположить изображение слева от холста и справа от холста, потому что изображение шире, чемсам холст. То, что я в основном должен достигнуть, помещает левую сторону изображения в начало холста и во втором сценарии помещает правую сторону изображения к правой стороне холста. Я уже пробовал код ниже, чтобы расположить его слева:

  ctx.drawImage(this.leftImageResized, 0, 0);

Но этот код работает не так, как ожидалось. По сути, он обрезает часть изображения, хотя изображение расположено слева, часть изображения слева находится вне поля зрения ...

РЕДАКТИРОВАТЬ: Этот вопрос не имеет ни одной общей точки свопрос обозначен как дубликат, я вообще не имитирую обложку, напротив, мое изображение должно быть вырезано, но в другом контексте. Как вы можете видеть на изображении ниже, этот сценарий является тем, который мне нужно охватить, изображение может быть намного больше, но мне нужно выровнять его по левому краю холста, а также по правому краю.

enter image description here enter image description here

1 Ответ

0 голосов
/ 30 октября 2019

Если я правильно понимаю, вот схема вашей ситуации:

 leftImageResized
|------------------|


       canvas
       |----|


 => left margin
|------|

Если это представление верно, ширина вашего левого поля равна (width image - width canvas) / 2

Атаким образом заменив

((this.thumbnailWidth/2)-this.leftImageResized.width)/2

на

-(this.leftImageResized.width - this.thumbnailWidth)/2

Должен решить это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...