gpt4 book ai didi

javascript - Canvas todataURL 图像 Png 质量不工作

转载 作者:行者123 更新时间:2023-12-05 01:36:12 24 4
gpt4 key购买 nike

我一直在尝试将 HTML5 canvas 转换为低质量的 dataUrl,因为我必须通过服务器传输 dataURL 文件,但我确实这样做了

dataURL = document.getElementById('canvas').toDataURL("image/png", 1);

dataURL = document.getElementById('canvas').toDataURL("image/png", 0.00001);

质量没有改变,字符串长度保持不变,当我在两种情况下下载回该图像时其质量相同,知道我做错了什么吗?

这是一个示例,但我正在执行此操作的 Canvas 具有更好的像素比率并且非常详细

const canvas = document.querySelector('canvas')
const button = document.querySelector('button')
const ctx = canvas.getContext('2d')
canvas.width = window.innerWidth
canvas.height = window.innerHeight

ctx.fillStyle = 'red'
ctx.fillRect(50, 50, 100, 100)
ctx.fillStyle = 'green'
ctx.fillRect(60, 60, 80, 80)
ctx.fillStyle = 'white'
ctx.font = "bold 20px sans-serif"
ctx.fillText("What a square!", 0, 90)

document.getElementById("b1").addEventListener('click', () => {
let data = canvas.toDataURL("image/png",0.000001);
downloadImage(data, "low.png");
})

document.getElementById("b2").addEventListener('click', () => {
let data = canvas.toDataURL("image/png",1.0);
downloadImage(data, "high.png");
})

function downloadImage(data, filename = 'untitled.png') {
const a = document.createElement('a');
a.href = data;
a.download = filename;
document.body.appendChild(a);
a.click();
}
<button id="b1">Save Low</button>
<button id="b2">Save High</button>
<canvas></canvas>

最佳答案

因为PNG是一种无损格式。您无法调整质量,因为它始终为 1。

来自spec :

A Number between 0 and 1 indicating the image quality to use for image formats that use lossy compression such as image/jpeg and image/webp.

关于javascript - Canvas todataURL 图像 Png 质量不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62264299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com