画布图像无法在 Chrome 中渲染(适用于 FF4 和 IE9)

发布于 2024-11-03 23:45:00 字数 288 浏览 1 评论 0原文

我很困惑。对于我的一生,我不知道为什么这在 Chrome 中不起作用。您可以在此处查看代码:

http://jsfiddle.net/corydorning/NgXSH/

当我拉动时这段代码在 FF 或 IE9 中运行得很好。您会注意到,fiddle 可以在 Chrome 中与渲染的元素一起工作,但它不能在 fiddle 之外工作。

非常感谢任何帮助。这是我第一次尝试画布。

I'm stumped. For the life of me, i have no idea why this is not working in Chrome. You can see the code here:

http://jsfiddle.net/corydorning/NgXSH/

When i pull this code up in FF or IE9 it works great. You'll notice that the fiddle WILL work in Chrome with the rendered element, but it DOES NOT work outside of fiddle.

Any help is greatly appreciated. This is my first attempt with canvas.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

子栖 2024-11-10 23:45:00

问题似乎是您没有等待原始图像元素加载。如果你稍微改变一下,它就可以正常工作:

  $(function() {
    var canvas = document.createElement('canvas'),
    canvasExists = !!(canvas.getContext && canvas.getContext('2d')),
    oImage = $('img')[0];

    if (canvasExists) {
      var context = canvas.getContext('2d'), img = new Image();

      img.onload = function() {
        canvas.height = img.height;
        canvas.width = img.width;

        $(oImage).replaceWith(canvas);

        context.drawImage(oImage, 0, 0);
      }

      img.src = oImage.src; 
    } else {
      // apply MS filters
    }

The problem appears to be that you're not waiting for the original image element to get loaded. If you change it around a little, it works fine:

  $(function() {
    var canvas = document.createElement('canvas'),
    canvasExists = !!(canvas.getContext && canvas.getContext('2d')),
    oImage = $('img')[0];

    if (canvasExists) {
      var context = canvas.getContext('2d'), img = new Image();

      img.onload = function() {
        canvas.height = img.height;
        canvas.width = img.width;

        $(oImage).replaceWith(canvas);

        context.drawImage(oImage, 0, 0);
      }

      img.src = oImage.src; 
    } else {
      // apply MS filters
    }
吃→可爱长大的 2024-11-10 23:45:00

如果你有很多 img.onload ,那么使用 img.onload 可能会很困难。在 chrome 中等待图像加载的一个简单方法是使用 :

$(window).load(function () {

而不是

$(document).ready(function () { 

$(window).load 实际上是在等待所有图像加载。

它非常适合在画布中使用图像。
(也可在 firefow 和 IE 中工作)

It could be hard to use img.onload if you have plenty of them. An easy way in chrome to wait for image loading is to use :

$(window).load(function () {

instead of

$(document).ready(function () { 

as $(window).load is actually waiting for all image to be loaded.

It's work perfecly for using the image in the canvas.
(work also in firefow and IE)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文