【发布时间】:2021-03-26 14:57:58
【问题描述】:
问题
我使用简单的 HTML 和使用 Canvas 放置了相同的图像 (Netflix),Canvas 版本比简单标签版本像素化程度更高。
我的尝试
- 我已尝试更改画布的比例并设置
window.pixelDeviceRatio = 2,它确实略有改善,但似乎仍然像素化。 - 我也尝试设置
context.imageSmoothingEnabled= false,但这并没有改变任何东西。 - 设置
context.smoothImageQuality = high,查看下面的照片以了解其外观
如果您知道如何安装它,请告诉我!
window.onload = () => {
var dpi = window.devicePixelRatio;
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
var imgLogo = document.getElementById("logo");
context.imageSmoothingEnabled = false;
context.drawImage(imgLogo, 0, 0, 175, 98.438);
}
.hidden {
display: none;
}
<img class = "hidden" id = "logo" src = "https://assets.stickpng.com/images/580b57fcd9996e24bc43c529.png" width="200"/>
<canvas id = "myCanvas" height = "150" width = "500">
</canvas>
<div class="blend1">
<div id="logoContainer">
<img src="https://assets.stickpng.com/images/580b57fcd9996e24bc43c529.png" width="175" />
</div>
</div>
【问题讨论】:
-
谢谢@Andrew,我指的是像素化的图像是“Netflix”标志。如果你放大到我的小提琴中的顶部版本,你会发现线条不像我的小提琴中的低版本那样平滑
-
哦,我认为您不是在谈论像素化,而是在谈论混叠。显然,浏览器的默认图像渲染器具有比
drawImage更好的抗锯齿算法,因为您正在使用它。也许有一些设置可以尝试不同的方法?顺便说一句,imgLogo实际上是背景,反之亦然。我认为如果您删除沙发图片并仅在白色背景上测试 Netflix 徽标,它会更明显。不确定这是否有帮助,但something to try. -
感谢您指出您的解释有很大帮助,这是更新后的小提琴 - jsfiddle.net/gqjznLwu - 我也会更新我的帖子。我尝试了您发送的链接,但不幸的是它并没有改变任何东西。
-
好吧,我做了一些研究,但找不到正确的答案。 Here's something。 FWIW,我已经简化了你的小提琴,只使用一个
img并使用一个变量来设置两个徽标的大小。 Link.
标签: html css html5-canvas