【问题标题】:Create HTML image from data in Javascript variable从 Javascript 变量中的数据创建 HTML 图像
【发布时间】:2011-06-18 09:04:01
【问题描述】:

我在 Javascript 变量中有图像数据(JPEG 或 PNG)。如何在 HTML 文档中显示图像?这些是非常大的图像,这样的代码不起作用,因为 URI 太长:

// doesn't work because the URI is too long
$('img#target').attr('src', 'data:...');

使用画布可能是答案,但我不知道如何用图像数据加载它。

如果您想知道:不,我不能直接将图像数据下载到 img 标签。它来自加密的服务器,并在浏览器中使用 Javascript 解密。

谢谢,
-- 艺术 Z。

【问题讨论】:

  • 并非所有地方都完全支持数据 URI 和画布。如何通过服务器代理图像并作为普通图像提供加密服务?

标签: javascript html canvas image


【解决方案1】:

原来是这样的

$('img#target').attr('src', 'data:...');

在除 IE 之外的所有应用程序中都有效。我的问题源于其他地方。

【讨论】:

    【解决方案2】:

    使用数据 URL 在画布上绘图:

    var img = new Image;
    img.onload = function(){
      myCanvasContext.drawImage(img,0,0);
    };
    img.src = "data:...";
    

    根据this question/answer,请务必在src 之前设置onload

    您说“URI 太长”,但不清楚您的意思是什么。只有 IE8 对数据 URI 有 32kB 的限制;对于其他浏览器,它应该可以正常工作。如果您遇到错误,请描述它。

    【讨论】:

    • 这些是大图。例如,我可以有一个 img.src="data:..." 数据长度为 1MB 或更多吗? (不支持IE8也没关系。)
    • @ArtZ 是的,应该可以正常工作。它很容易测试,对吗?
    • @Phogz 是的,你是对的。它适用于除 IE 之外的所有应用程序。我遇到的问题似乎是由于数据在工作流程的早期被破坏造成的。感谢您鼓励我到别处寻找错误。
    • @ArtZ 我很高兴它对你有用。作为 Stack Overflow 的新用户,请注意,您应该“赞成”(三角形)任何您认为有帮助的答案,如果任何一个答案回答了您的问题,您应该“接受”它(复选标记)。这会给您带来声誉,并奖励那些在网站上贡献空闲时间回答问题的人。
    • @Phrogz Stack Overflow 不允许我投票,因为我没有 15 个声望点。
    猜你喜欢
    • 2020-11-30
    • 2021-10-05
    • 2016-06-29
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 2016-10-24
    相关资源
    最近更新 更多