我想在浏览器中播放动画 gif 时处理每一帧的图像数据,我想使用 HTML5 canvas 和 Javascript 来完成。例如,我有一个 gif 动画,我想在浏览器中播放时将每一帧转换为灰度。这可能吗?每当我在动画 gif 中操作图像数据时,只会显示第一帧(正确操作)并且 gif 不会再播放。如果有解决方案,这将是一项非常有用的技术。谢谢。
编辑:有没有办法在 Javascript 中查询动画 gif 的当前帧,这样我就可以在动画进行时将 putImageData 用于图像?
最佳答案
作为this page指出,您可以使用 drawImage() 在 Canvas 上绘制 GIF,目前它会在 Gecko 和 WebKit 中从 GIF 中绘制当前帧——但在 Opera 中不会,而且根据规范也不会,所以依赖这种行为不是一个好主意。据我所知,没有办法从 DOM 中获取单个帧数据;在写 jsgif 之前我研究了一段时间(在另一个答案中提到过,但实际上并不意味着任何类型的实际用途——它的效率非常低)。
如果您可以在服务器上解压帧然后手动设置它们的动画(例如 Gmail does ),那可能是您的最佳选择。
关于javascript - 如何使用 HTML5 Canvas 和 Javascript 将 putImageData 与动画 gif 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5677371/