javascript – Canvas中最近邻的渲染

我有一个精灵,使用sprite sheet动画.他只有16×16,但是我想把他放大到64×64左右,它的像素都是好的!

alt text http://i30.tinypic.com/2nu243.jpg

结果是可怕的,当然浏览器是反锯齿的. :/

谢谢!

解决方法

如果有人再次绊倒(像我一样),Webkit支持图像渲染的-webkit优化对比度值,(当前)是最近邻近放大的实现.它可以应用于图像和画布.

这是一个例子.

.nn128 {
    width: 128px;
    height: 128px;
    image-rendering: -moz-crisp-edges;
    image-rendering: -webkit-optimize-contrast;
}

<canvas class="nn128" width="16" height="16"></canvas>
<img src="path/to/small/image.png" alt="Small image" class="nn128">

通过此设置,WebkitSafari和Gecko / Firefox将使用最近邻的算法将16×16画布空间和小图像放大到128×128.

更新答案最初表示Webkit浏览器支持这一点;事实上,截至2011-12-24,它适用于Mac OS上的Safari和Mac OS上的Chrome,但不适用于Chrome 1 Windows(Windows上的Safari未经验证),如Issue 106662 of the Chromium bug tracker所述.接受CSS样式表中的-webkit-optimize-contrast值,但不会有任何影响.我的期望是有一天会有效,而这种方法将是获得最近邻居升级的正确方法,但是现在使用这种方法意味着Windows Chrome用户将不得不忍受模糊.

相关文章

事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数...
js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言...
什么是跨域 跨域 : 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源...
@ &quot;TOC&quot; 常见对base64的认知(不完全正确) 首先对base64常见的认知,也是须知的必须有...
搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : 的缩写,说都能直接说出来 :模型, :视图, :视图模...
首先我们需要一个html代码的框架如下: 我们的目的是实现ul中的内容进行横向的一点一点滚动。ul中的内容...