如何在画布上以原始质量从 URL 绘制图像

Zha*_* Yi 5 html javascript canvas

我想从 url 加载图像并将其绘制在画布上。我的画布占据整个窗口大小,我只希望图像以 100x100 的大小显示在鼠标位置上。下面是我的代码:

drawImage(imageUrl) {
    const ctx = this.canvas.getContext('2d');
    ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
    const image = new Image();
    image.onload = () => {
      ctx.imageSmoothingEnabled = false;
      ctx.drawImage(image, this.state.mousePos.x, this.state.mousePos.y,
        100, 100);
    };
    image.src = 'https://cdn.sstatic.net/stackexchange/img/logos/so/so-icon.png';

  }
Run Code Online (Sandbox Code Playgroud)

图像可以在网页上绘制,但质量很低。以下是来自上述链接的原图:

在此输入图像描述

下面是我的画布上显示的图像:

在此输入图像描述

您可以比较两个图像,它们的质量有很大不同。如何在画布上绘制高质量的图像?

Dur*_*rga 6

let canvas = document.getElementById('c'),ctx = canvas.getContext('2d');
const image = new Image();
image.onload = () => {
  ctx.imageSmoothingEnabled = false;
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.drawImage(image, 50, 50,500,500);
};
image.src = 'https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.svg?v=6e4af45f4d66';
Run Code Online (Sandbox Code Playgroud)
canvas{
 border : 2px solid black;
}
Run Code Online (Sandbox Code Playgroud)
<canvas id='c' width=500 height=500/>
Run Code Online (Sandbox Code Playgroud)

如果您依赖图像质量,请使用 svg。