【发布时间】:2014-03-05 11:14:25
【问题描述】:
我正在使用一个 jquery 插件,该插件利用画布绘制点运动动画。(http://arena.palamago.com.ar/spotMotion/)
我知道在这种情况下我可以使用动画 GIF 图像,但我将来使用的图像类型将需要更高的质量和透明度。
如果您查看下面的 jsfiddle,您会发现图像不清晰,我在视网膜显示器上,它们看起来更糟,原始图像是 800 像素。由于某些未知原因,Canvas 没有将图像缩放得足够高。我对画布相当陌生,并且已经看到了一些扩大规模的方法,但没有获得更好的结果。
我查看了画布宽度和画布样式宽度
canvas.width = "200";
canvas.height = "200"; // allow 40 pixels for status bar on iOS
canvas.style.width = "100px";
canvas.style.height = "100px";
我还研究了 css 图像渲染技术
canvas { image-rendering:optimizeQuality;}
又一次尝试,但我似乎无法将它与这个插件集成。
function enhanceContext(canvas, context) {
var ratio = window.devicePixelRatio || 1,
width = canvas.width,
height = canvas.height;
if (ratio > 1) {
canvas.width = width * ratio;
canvas.height = height * ratio;
canvas.style.width = width + "px";
canvas.style.height = height + "px";
context.scale(ratio, ratio);
}
}
我见过一些非常复杂的方法,人们编写放大算法,我只是不明白如何将它们组合在一起。如果有人知道如何提高图像质量,请给我一些时间。
谢谢
【问题讨论】:
-
SVG + CSS 动画?
-
可行,但我想将其应用于更详细的动画,例如人物行走或树木生长金钱。卡通之类的东西,我认为这超出了 SVG 范围?请记住,我也可以使用 GIF 来执行此操作,但这更多是我想要放大画布绘制图像的原则。
-
这么复杂? goo.gl/zskws2
-
是的,为什么不呢?只是一堆渐变、贝塞尔曲线和路径。
标签: javascript html animation canvas