字符串PNG转换返回模糊图像

问题描述 投票:0回答:1

我正在为 makecode arcade 制作一个网站here,我正在制作一个名为 ConvertAndDownload 的 PNG 函数字符串 但是当我下载图像时,一切都模糊了 例如 假设我有字符串

1 2 3 4 5  6 7 8 9 a  b c d e f  1 3 7 a f
它返回这个,但对我来说它假设是像素化的并且不是全部混合在一起(图像是 5x4 像素) Converted Image(不知道如何调整图像大小,这就是你得到的)

我尝试添加

ctx.imageSmoothingEnabled = false;
但没用,

这是下载图片功能

function convertAndDownload() {
    var makeCodeString = document.getElementById('makeCodeInput').value;
    var canvasData = convertImgStringToCanvas(makeCodeString, colors)
    var canvas = canvasData;
    var ctx = canvas.getContext('2d');   
    
    
    var dataURL = canvas.toDataURL('image/png');
    var downloadLink = document.createElement('a');
    downloadLink.href = dataURL;
    downloadLink.download = document.getElementById('varName').value + '.png';
    document.body.appendChild(downloadLink);
    downloadLink.click();
    document.body.removeChild(downloadLink);
}
javascript image canvas download blurry
1个回答
0
投票

为了防止下载的图像模糊,您需要确保画布尺寸与图像尺寸匹配。此外,您可以禁用图像平滑以防止任何可能导致模糊的插值。以下是修改 ConvertAndDownload 函数的方法:

function convertAndDownload() {
    var makeCodeString = document.getElementById('makeCodeInput').value;
    var canvasData = convertImgStringToCanvas(makeCodeString, colors);
    var canvas = canvasData.canvas;
    var ctx = canvas.getContext('2d');

    // Set canvas size to match image size
    canvas.width = canvasData.width;
    canvas.height = canvasData.height;

    // Disable image smoothing
    ctx.imageSmoothingEnabled = false;
    ctx.webkitImageSmoothingEnabled = false;
    ctx.mozImageSmoothingEnabled = false;
    ctx.msImageSmoothingEnabled = false;

    var dataURL = canvas.toDataURL('image/png');
    var downloadLink = document.createElement('a');
    downloadLink.href = dataURL;
    downloadLink.download = document.getElementById('varName').value + '.png';
    document.body.appendChild(downloadLink);
    downloadLink.click();
    document.body.removeChild(downloadLink);
}
© www.soinside.com 2019 - 2024. All rights reserved.