注意图片是使用 object-fit: cover 这种方式缩放过的
我试过下面的常规方法,但是得到的图片不太一样,因为浏览器缩放过的原因:
export const ImageToCanvas = (image: HTMLImageElement) => {
const canvas = document.createElement('canvas');
canvas.width = image.width;
canvas.height = image.height;
canvas.getContext('2d')?.drawImage(image, 0, 0);
return canvas;
};
export const canvasToImage = (canvas: HTMLCanvasElement) => {
const image = new Image();
image.src = canvas.toDataURL('image/png');
return image;
};
export const downloadImage = (image: HTMLImageElement, name: string) => {
const link = document.createElement('a');
link.download = name;
link.href = image.src;
link.click();
};