我需要使用最近邻插值方式进行图像缩放,而不是当前使用的双三次插值方式。目前我使用以下代码:
ms-interpolation-mode: nearest-neighbor;
image-rendering: -moz-crisp-edges;
这在IE和Firefox中有效,但在Chrome和Safari中无效。是否有任何webkit替代品或其他方法来实现此效果?
我需要使用最近邻插值方式进行图像缩放,而不是当前使用的双三次插值方式。目前我使用以下代码:
ms-interpolation-mode: nearest-neighbor;
image-rendering: -moz-crisp-edges;
这在IE和Firefox中有效,但在Chrome和Safari中无效。是否有任何webkit替代品或其他方法来实现此效果?
编辑:现在可以使用image-rendering: -webkit-optimize-contrast;
实现。
https://developer.mozilla.org/en-US/docs/CSS/image-rendering#Examples
这在当前版本的Chrome中不起作用,以下是一些有用的链接:
我原本认为没有办法。
而一些快速的谷歌搜索几乎证实了这一点;webkit image interpolation 的顶级谷歌搜索结果是:
http://code.google.com/p/chromium/issues/detail?id=1502
在2008年9月报告,至今仍未解决。
另外: https://bugs.webkit.org/show_bug.cgi?id=40881
<img>
替换为<canvas>
。 - thirtydot<img src="upscale.php?image=the-image-filename.png&w=300&h=300" />
。或者你可以通过.htaccess
创建一个更好的URL:<img src="the-image-filename.upscaled_300x300.png" />
,或类似的方式。 - thirtydot我刚刚尝试了这个:
img {image-rendering: pixelated;}
它在Chrome 39.0.2145.4 dev-m上运行良好。
现在您可以设置在执行drawImage时使用的算法
ctx.imageSmoothingQuality = "high"
来源:https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/imageSmoothingQuality