html - 图像渲染 "crisp-edges"与 "pixelated"

标签 html css image-rendering

根据 MDN当前建议的 CSS image-rendering 属性值为 autocrisp-edgespixelated。但我看不出 crisp-edgespixelated 之间的区别,因为两者都应该只是放大像素而不是插值任何东西。

那么区别在哪里呢?

最佳答案

虽然@codl 的回答是正确的,但并不完整。根据speccrisp-edgespixelated 在两个方面有所不同,而不仅仅是一个。

  1. crisp-edges 允许使用与最近邻算法根本不同的像素缩放算法。其他非平滑像素缩放器的示例包括 hqx家庭和EPX/Scale2x .但是,pixelated 必须使用最近邻或类似方法。

  2. crisp-edges 适用于放大和缩小,而 pixelated 仅适用于放大。它使用与 auto 相同的算法进行缩小。

这些差异的原因是 pixelated 是为像素化 Sprite 设计的,即使在大尺寸的情况下也能清晰地像素化,但 crisp-edges 被设计为防止图像的边缘变得模糊。如果按比例缩小,小 Sprite 变得模糊是可以的,因为它看起来像素化程度不会比原始尺寸小。使用像素艺术缩放算法确实可以保持清晰的边缘,但它也减少了像素化,这与 pixelated 的设计目的相反。

也就是说,目前提出了与 sprite 无关的 pixelated 用途,而是利用双重缩放算法。例如,在 HiDPI 屏幕上,通常认为 auto 升级到正常 DPI 会产生模糊的图标。使用 pixelated 可以让图标在不模糊的情况下放大,但也可以让它们正常缩小。这允许在纯 CSS 中使用两种不同的缩放算法,而无需使用 JavaScript 检查原始图像的大小或最终显示大小。

关于html - 图像渲染 "crisp-edges"与 "pixelated",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20678639/

相关文章:

java - JTable 图像渲染在应用程序中承受过多负载

ios - 使用 UIGraphicsImageRenderer 的 UIView 到 UIImage 错误地使用 alpha 渲染图像

html - IE10随机图像渲染问题

javascript - 如何使用 javascript 以编程方式启用和禁用按钮

javascript - 从 HTML 中的 JavaScript 函数获取信息。如何?

javascript - 在元素上按 enter 后,选项卡焦点没有改变

html - flex 元素不考虑边距和框大小 : border-box

java - 在 Java 中运行 JavaScript

jquery - 使用 jQuery 过滤

php - Eclipse PDT 中的 HTML 所见即所得编辑器