如何从 JavaScript 变量保存 png

2024-04-23

我在 javascript 变量中有一个以 base64 编码的图像:data:image/png;base64, base64 data

[编辑] 我需要将该文件保存到磁盘而不要求访问者右键单击 [/编辑]

是否可以 ?如何 ?

提前致谢

此致


我知道这个问题已经有两年了,但希望人们能看到这个更新。

您可以提示用户以 base64 字符串保存图像(并设置文件名),而不要求用户执行右键点击

var download = document.createElement('a');
download.href = dataURI;
download.download = filename;
download.click();

Example:

var download = document.createElement('a');
download.href = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
download.download = 'reddot.png';
download.click();

为了使用 Firefox 触发点击事件,您需要按照中的说明进行操作这个答案 https://stackoverflow.com/a/827793。基本上:

function fireEvent(obj,evt){
  var fireOnThis = obj;
  if(document.createEvent ) {
    var evObj = document.createEvent('MouseEvents');
    evObj.initEvent( evt, true, false );
    fireOnThis.dispatchEvent( evObj );
  } else if( document.createEventObject ) {
    var evObj = document.createEventObject();
    fireOnThis.fireEvent( 'on' + evt, evObj );
  }
}
fireEvent(download, 'click')

截至 2013 年 3 月 20 日,唯一完全支持download属性是Chrome。在这里查看兼容性表 http://caniuse.com/#feat=download

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 JavaScript 变量保存 png 的相关文章

随机推荐

  • 让 Eclipse 识别通过 Spring MVC 项目中的上下文包含的 CSS

    我读过许多将 CSS 包含到 Spring MVC 项目中的不同方法 它们在部署到服务器上时都加载得很好 然而 似乎 Eclipse 不太高兴 除非我提供相对路径 例如 css style css 但该路径在部署时显然不会加载 如果我使用上
  • 使用结构从文件 I/O 读取然后打印的问题

    我正在尝试读取一个 CSV 文件并打印出该文件中的选择值 所有这些值都是字符串 末尾有一个字符 但我在实际打印它时遇到了麻烦 它应该忽略输入中的特定数据 例如ASO ORL PR 当然也可以跳过空白处 我不知道是文件 I O 的问题还是我打
  • 获取 PostgreSQL 的 RAISE NOTICE 的所有通知

    我有一个大数据库函数 它有多行这样 RAISE NOTICE some step completed 我想在我的 PHP 应用程序中获得所有这些通知 我只找到了pg last notice 只返回最后一个通知的函数 有什么办法可以获取所有通
  • 将列表值反映到另一个列表中?

    List
  • 在 python 中,如何使用 __str__ 逐行返回列表中的元素

    我有课Numberlist它需要一个数字列表 class Numberlist def init self number self number number def str self for i in self number print
  • iOS 10 通知内容扩展未加载

    我有一个简单的应用程序来处理推送通知 我的通知服务扩展正在运行 我可以发送带有图像 URL 的远程通知并加载它 我似乎无法让通知内容扩展正常工作 我已经看过多个教程 他们都说 只需从目标菜单创建一个通知内容扩展 然后在通知内容扩展 Info
  • ASP.NET MVC OutputCache 不适用于根 URI

    我正在学习 ASP NET MVC 并被一个问题困扰 在HomeController中 Index操作具有OutputCache属性 但它似乎不起作用 HandleError public class HomeController Cont
  • pytest 由于 ModuleNotFoundError 失败,但在使用“python -m pytest”时有效

    类似于这个OP的问题 https stackoverflow com questions 56755761 filenotfounderror when using python m pytest vs pytest 但反过来说 pytes
  • Reactjs this.refs 与 document.getElementById

    如果我只有基本表格 我还应该吗 this refs或者只是去document getElementById 我所说的基本是指 export default class ForgetPasswordComponent extends Reac
  • 使用渐变填充 SVG 形状

    如何将线性渐变和阴影应用于此图案
  • 熊猫选择倒数第二列,这也不是 nan

    我已尽可能多地清理数据并在 Pandas 数据框中读取它们 所以问题是不同的文件有不同的列数 但它总是倒数第二个非纳米列是我想要的 那么有什么办法可以把它们挑出来吗 这是数据的示例 f g h l 0 39994 29 568 29 569
  • 如何在SSRS图轴上跨越月份和年份?

    我真的很喜欢下面 SSRS 图表中 x 轴的月份和年份的跨度 我怎么做 将日期拆分为数据集中的几列 将这些列添加为条形图的类别组
  • Android ListView 填充内容而不移动 ListView 高度?

    我有一个 ListView 里面有一堆项目 如何使顶部和底部项目的顶部边距为 10dp 底部项目的底部边距为 10dp 现在我可以通过 ListView 上的填充或边距来做到这一点 但结果是 当您滚动时 ListView 的边缘现在距屏幕底
  • PHP中1个月代表多少天?

    我发现 php 中的月份加法和减法存在奇怪的问题 我的问题是 1 个月有相当于天数吗 如果是 这是所有编程语言的通用标准吗 举几个例子 echo date Y m d strtotime 2011 03 31 1 months 2011 0
  • node.js http 服务器,检测客户端何时断开连接

    我使用express 和node js 作为http 服务器 我存储响应对象 以便可以将事件流式传输到该通道上的客户端 有没有办法检测客户端何时断开连接 当我杀死我的客户端时 我仍然可以写入响应对象 而不会收到任何类型的异常 错误 看起来只
  • 安装 Rails 版本 3.2.15 时出现“Gem::RemoteFetcher::UnknownHostError”

    我之前已经在实时 ubuntu USB 上成功安装了 Rails 3 2 15 并具有数据持久性 现在我已经习惯了操作系统 Ubuntu 12 04 LTS 我已经将它安装在笔记本电脑上 并且正在安装我在实时 USB 中使用的东西 长话短说
  • 更改控制台大小

    Delphi中的简单问题 我创建了一个控制台应用程序 如果控制台窗口的高度少于 80 行 我需要将其高度更改为 80 行 这需要从代码中完成 并且实际上是在代码内有条件的 即 当发生错误时 它会增加控制台的大小 以便整个 巨大的 错误报告可
  • NSIS:在标签中插入链接

    假设我有以下 nsDialog 标签 单击 接受 即表示我同意示例的许可协议和隐私政策 您可以访问需要使用个人信息的功能 欲了解更多信息 请下载示例的内容政策 我想在此标签中插入链接 如下所示 单击 接受 即表示我同意示例的内容许可协议 h
  • 动画 GIF 作为 THREE.js 中的纹理

    我正在寻找一种在 THREE js 中使用 GIF 动画作为纹理的方法 我目前可以加载纹理 甚至是 GIF 格式 但它无法播放动画 有什么办法可以做到吗 我发现了一些像这样的链接 https github com JordiRos GLGi
  • 如何从 JavaScript 变量保存 png

    我在 javascript 变量中有一个以 base64 编码的图像 data image png base64 base64 data 编辑 我需要将该文件保存到磁盘而不要求访问者右键单击 编辑 是否可以 如何 提前致谢 此致 我知道这个