在图形处理或前端开发中,"在适当调整大小的画布上绘制,同时保持图像大小"通常涉及以下两个核心概念:
drawImage()
方法会按照目标画布的尺寸缩放图像。通过以下步骤实现:
img.naturalWidth
, img.naturalHeight
)。drawImage
的三参数形式(不缩放)或九参数形式(精确控制缩放)。<canvas id="myCanvas"></canvas>
<script>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const img = new Image();
img.onload = function() {
// 画布尺寸调整为图像原始大小(或自定义尺寸)
canvas.width = img.naturalWidth; // 保持画布与图像同尺寸
canvas.height = img.naturalHeight;
// 绘制图像(不缩放)
ctx.drawImage(img, 0, 0); // 三参数形式:image, dx, dy
/* 如果需要在更大画布中居中绘制原始尺寸图像:
canvas.width = 800; // 自定义画布宽度
canvas.height = 600; // 自定义画布高度
const x = (canvas.width - img.naturalWidth) / 2; // 居中计算
const y = (canvas.height - img.naturalHeight) / 2;
ctx.drawImage(img, x, y, img.naturalWidth, img.naturalHeight);
*/
};
img.src = 'example.jpg'; // 替换为实际图像路径
</script>
window.devicePixelRatio
缩放画布以避免模糊。resize
事件时需重新计算绘制逻辑。通过以上方法,可确保图像在画布中始终以原始尺寸呈现,不受画布布局缩放影响。