Эти вопросы похожи, но не помогают: это , это , это и это .
Цель состоит в том, чтобы нарисовать изображение на квадратном холсте, сохранив исходное соотношение сторон и центрировав изображение, если исходное соотношение сторон не является квадратным.
Например, возьмите прилагаемое изображение 1262x2688. Приведенный ниже код изменяет размер до 100x100, но он искажает соотношение сторон.
Код должен: (1) масштабировать изображение, чтобы оно соответствовало холсту 100x100;(2) сохранить соотношение сторон;и (3) центрируйте изображение вертикально и горизонтально в пределах холста.
// Create canvas element.
var canvas = $(document.createElement("canvas"));
// Get canvas context.
var context = canvas[0].getContext("2d");
// Set canvas size.
canvas[0].width = 100;
canvas[0].height = 100;
// Write image to canvas.
context.drawImage(image, 0, 0, newWidth, newHeight);
Изображение