【发布时间】:2012-01-25 16:38:41
【问题描述】:
所以我最近遇到了这个:http://www.nicalis.com/
我很好奇:有没有办法用较小的图像做这种事情?我的意思是,它是像素艺术,而不是使用每个像素大小为四倍的图像,我们不能用代码拉伸它们吗?所以我开始尝试实现它。
我尝试了 CSS、Javascript 甚至 HTML,但都没有奏效。它们都非常模糊(像这样:http://jsfiddle.net/nUVJt/2/),这让我想到了我的问题:你可以在浏览器中拉伸图像而不使用任何抗锯齿吗?
我愿意接受任何建议,无论是使用画布、jQuery、CSS3 还是其他。
感谢您的帮助!
编辑:现在有更好的方法来做到这一点!一种稍微不那么骇人听闻的方式!这就是魔法:
.pixelated {
image-rendering: -moz-crisp-edges;
image-rendering: -o-crisp-edges;
image-rendering: -webkit-optimize-contrast;
-ms-interpolation-mode: nearest-neighbor;
image-rendering: pixelated;
}
这将停止所有现代浏览器中的抗锯齿功能。它甚至可以在 IE7-8 中工作,但不能在 9 中工作,不幸的是,我不知道在 9 中有任何方法(除了下面概述的画布黑客)。 用这种方式做这件事比用 JS 快多少,这甚至都不好笑。以下是有关这些的更多信息:https://developer.mozilla.org/en-US/docs/CSS/Image-rendering
EDIT2:因为这还不是官方规范,所以不是很可靠。 Chrome 和 FF 似乎都停止支持它,因为我写了上面的内容(根据下面提到的this article),这真的很烦人。我们可能还需要再等几年才能真正开始在 CSS 中使用它,这真的很不幸。
最终编辑:现在有一种官方方法可以做到这一点!有一个名为image-rendering 的新属性。它在CSS3 spec 中。现在支持super spotty,但是Chrome just added support,所以不久之后我们就可以说image-rendering: pixelated;,它可以在所有地方工作(yaayy常青浏览器!)
【问题讨论】:
-
抗锯齿是一种用于平滑像素化边缘的技术。听起来您确实想使用抗锯齿功能。
-
@James 重点是保留像素化边缘,以获得复古效果。
-
scale()方法呢? w3schools.com/TAGS/canvas_scale.asp.would 那行得通吗?
标签: javascript css image image-manipulation