首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从通过ajax发送的dataURI生成png-file

dataURI是一种将数据嵌入到URL中的方案,可以用来表示各种类型的数据,包括图像、音频、视频等。它的格式为"data:<mediatype>,<data>",其中<mediatype>表示数据的媒体类型,<data>表示实际的数据。

要从通过ajax发送的dataURI生成png文件,可以按照以下步骤进行操作:

  1. 解析dataURI:使用JavaScript的URL.createObjectURL()方法可以将dataURI转换为Blob对象。Blob对象是二进制数据的容器,可以用于创建文件。
  2. 创建canvas元素:使用JavaScript的document.createElement()方法创建一个canvas元素,用于绘制图像。
  3. 加载图像数据:使用JavaScript的Image对象加载dataURI中的图像数据。可以通过设置Image对象的src属性为dataURI来实现。
  4. 绘制图像:在canvas上使用JavaScript的2D绘图API,将加载的图像数据绘制到canvas上。
  5. 导出为png文件:使用JavaScript的canvas.toDataURL()方法将canvas上的图像数据导出为dataURI。将dataURI中的前缀"data:image/png;base64,"去除,得到纯粹的图像数据。
  6. 下载png文件:创建一个下载链接,设置其href属性为导出的png文件的dataURI,设置其download属性为文件名,然后使用JavaScript的click()方法触发下载。

以下是一个示例代码:

代码语言:javascript
复制
// 解析dataURI
function dataURItoBlob(dataURI) {
  var byteString = atob(dataURI.split(',')[1]);
  var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];
  var ab = new ArrayBuffer(byteString.length);
  var ia = new Uint8Array(ab);
  for (var i = 0; i < byteString.length; i++) {
    ia[i] = byteString.charCodeAt(i);
  }
  return new Blob([ab], { type: mimeString });
}

// 创建canvas元素
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');

// 加载图像数据
var img = new Image();
img.onload = function() {
  // 绘制图像
  ctx.drawImage(img, 0, 0);

  // 导出为png文件
  var pngDataURI = canvas.toDataURL('image/png').replace(/^data:image\/(png|jpg);base64,/, '');

  // 下载png文件
  var link = document.createElement('a');
  link.href = 'data:application/octet-stream;base64,' + pngDataURI;
  link.download = 'image.png';
  link.click();
};

// 设置图像源
img.src = 'data:image/png;base64,iVBORw0KG...'; // 这里替换成实际的dataURI

推荐的腾讯云相关产品:腾讯云对象存储(COS)

  • 概念:腾讯云对象存储(COS)是一种高可用、高可靠、强安全的云端存储服务,可用于存储和处理各种类型的数据,包括图像、音频、视频等。
  • 分类:COS提供了多种存储类型,包括标准存储、低频存储、归档存储等,可以根据数据的访问频率和成本要求选择适合的存储类型。
  • 优势:COS具有高可用性、高可靠性、强安全性和灵活性的优势,可以满足各种规模和需求的存储需求。
  • 应用场景:COS可以应用于各种场景,如网站和应用程序的静态资源存储、大规模数据备份和归档、多媒体内容存储和分发等。
  • 产品介绍链接地址:腾讯云对象存储(COS)

注意:以上答案仅供参考,具体实现方式可能因具体情况而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浏览器端用JS创建和下载文件

浏览器端用JS创建和下载文件 1 需求 前端需要把获取数据生成文件让用户下载,按照以往生成 a 标签 href 指向目的文件,不仅需要有已经生成文件服务器路径,而且很多浏览器支持类型文件会默认加载而不提示用户选择路径下载...支持),下载时会直接使用链接名字来作为文件名(可给 download 加上文件名进行修改,如: download=“file.js”) 2.2 生成文件:DataURI 用js将内容生成文件可以仿照图片...DataURI 方式 封装成一个下载方法 function downloadFile(aLink, fileName...,可用浏览器新API(URL.createObjectURL)来解决,URL.createObjectURL 通常用来创建图片 DataURI 显示图片,这里用来下载文件,参数是 File对象(通过input...[type=file]选择文件)或 Blob 对象(二进制大对象),让浏览器自动设定文件类型 解决类型限制:用 content 创建 ObjectURL 并赋值给 aLink 即可解决文件类型限制

4.7K120

浏览器端用JS创建和下载文件 【原创】

DataURI 3 改进方案 1 需求 前端需要把获取数据生成文件让用户下载,按照以往生成 a 标签 href 指向目的文件,不仅需要有已经生成文件服务器路径,而且很多浏览器支持类型文件会默认加载而不提示用户选择路径下载...支持),下载时会直接使用链接名字来作为文件名(可给 download 加上文件名进行修改,如: download=“file.js”) 2.2 生成文件:DataURI 用js将内容生成文件可以仿照图片...DataURI 方式 封装成一个下载方法 function downloadFile(aLink, fileName...,可用浏览器新API(URL.createObjectURL)来解决,URL.createObjectURL 通常用来创建图片 DataURI 显示图片,这里用来下载文件,参数是 File对象(通过input...[type=file]选择文件)或 Blob 对象(二进制大对象),让浏览器自动设定文件类型 解决类型限制:用 content 创建 ObjectURL 并赋值给 aLink 即可解决文件类型限制

2.3K70

Android邮件发送详解

通过Intent.EXTRA_SUBJECT和Intent.EXTRA_TEXT传递标题和文本数据,记住,一定要使用这些常量,这是标准,否则Email客户端不认识,那样你传递标题和文本就不起作用了...Email'客户端发送Activity提供了两个Intent Filter,一个用于发送普通邮件,一个用户发送带有附件邮件。...区分很很容易发送普通邮件那个Intent Filter配置Action SENDTO,而带有附件邮件则是SEND,所以是2个不一样,但是哪些比如附加“标题”,“内容”,“抄送”,“发送多人”等等还是通用...SENDTO发送普通邮件,SEND可以发送普通和带有附件,不过最好主要用于发送附件。...Uri dataUri = intent.getData(); if (dataUri !

92220

Android中我为什么发不了邮件--Android邮件发送详解

在这里你可以学到: 什么是Intent和Intent Fileter 如何发送Email 如何发送特定标题和内容Emil 如何发送给多人 如何抄送和密送 如何发送附件 一:什么是Intent和Intent...Email 通过上面就会知道Android应用之间通信是通过Intent这个东西,如果手机中有实现了你想要功能应用那么你就不用麻烦去实现一个拉。...再通过Intent.EXTRA_SUBJECT和Intent.EXTRA_TEXT传递标题和文本数据,记住,一定要使用这些常量,这是标准,否则Email客户端不认识,那样你传递标题和文本就不起作用了...五,发送附件 Email’客户端发送Activity提供了两个Intent Filter,一个用于发送普通邮件,一个用户发送带有附件邮件。...Uri dataUri = intent.getData(); if (dataUri !

88440

iOS APP添加桌面快捷方式

-> 主屏幕点击刚刚添加到快捷功能,跳转到APP对应界面。...准备 **第一步** 客户端:iOS 打开已有Xcode项目,选中Target,添加URL Scheme,这个URL Scheme是自己定义,在这个地方定义了xxx之后,可以通过在浏览器中输入xxx:...DataURI这种样式,生成方法可以参考下面的 "title"则是页面的标题 \(urlToRedirect.absoluteString)是定义好URL Scheme链接 获取图片DataURI格式数据...href中,然后再把之前网页再用mocky生成一个链接,在APP中使用openURL方式打开最后生成这个链接,运行,调试。...所以现在想要是,在同一个页面上,APP跳转时候显示“引导添加到桌面”样式,桌面打开时显示“中间页”样式。

4.7K40

用字母替代图片脚本:LetterAvatar

基于canvas,通过toDataURL动态生成base64图片。...目前我主题Gravatar头像,就是利用这个LetterAvatar脚本实现未设置Gravatar头像则读取ALT标签,自动生成首字图片替代默认头像图片。...事件用自动生成字母图片替换src图片地址,判断方式不是很合理,如果不是因为个缺点我都想直接拿来用了,如果作者再优化一下,绝对是款优秀实用插件。...我实现原理和插件不同,配合头像本地缓存功能,判断无头像后,直接为无头像图片添加特定class类,然后通过LetterAvatar脚本替换图片。...需要注意是上面提到插件,Gravatar头像图片必须有alt标签属性,否则不会生成正常图片,可惜大部分主题默认Gravatar头像alt标签属性是空.....

40630

ContentProvider初探

使用系统提供ContentProvider 其实很多时候我们用到ContentProvider并不是自己暴露自己数据,更多时候通过 ContentResolver来读取其他应用信息,最常用莫过于读取系统...; resolver.insert(uri, conValues); } 注意事项: 上述代码在4.4以下都可以实现写入短信功能,而5.0上就无法写入,原因是: 5.0开始,默认短信应用外软件不能以写入短信数据库形式发短信...接下来,创建一个新项目,我们来实现ContentResolver部分,我们直接通过按钮点击插入一条数据: MainActivity.java public class MainActivity extends...db数据库取出,用图形查看工具 查看即可发现插入数据,时间关系,就不演示结果了~ 通过ContentObserver监听ContentProvider数据变化 ?...初探就到这里,我们学习了: ContentProvider概念以及流程,使用系统提供一些ContentProvider,以及定制自己ContentProvider, 最后还讲解了通过ContentObserver

49630

AJAX基本原理及实例解析。

responseText——服务器进程返回数据字符串形式。   responseXML——服务器进程返回DOM兼容文档数据对象。   ...Ajax核心就是是JavaScript对象XmlHttpRequest,这个对象为向服务器发送请求和解析服务器响应提供了流畅接口。...请求发往服务器,服务器根据请求生成响应(Response),传回给XHR对象,在收到响应后相应数据会填充到XHR对象属性,有四个相关属性会被填充:   responseText——服务器进程返回数据字符串形式...responseXML——服务器进程返回DOM兼容文档数据对象。   status——服务器返回数字代码,如404(未找到)和200(已就绪)。   ...通过 AJAX,JavaScript 无需等待服务器响应,而是:   在等待服务器响应时执行其他脚本   当响应就绪后对响应进行处理   当使用 async=true 时,规定在响应处于 onreadystatechange

94430

Webpack 中使用source map 在开发过程中进行调试

我们都知道webpack在打包时候会将源代码打包成一个bundle文件,bundle文件就是经过了loader转换,还有webpack一些插件处理,以及webpack构建过程中一些转换,最后会生成一个大...JS文件,直接去看这个文件是没法调试。...source map是在开发过程中一个利期,通过它我们在调试时候可以定位到源代码,阮一峰老师 JavaScript Source Map 详解写比较详情细,大家可以去看看。...1. source map 关键字 1. eval:使⽤eval包裹模块代码; 2. source map:产⽣.map⽂件; 3.cheap:不包含列信息; 4. inline:将.map作为DataURI...嵌⼊,不单独⽣成.map⽂件; 5. module:包含loadersource map; 2. source map 类型 source map类型是可以根据关键字进行一个排列组合得到不同类型

45130

jQuery ajax - ajax() 方法jQuery ajax - ajax() 方法

jQuery ajax - ajax() 方法 http://www.w3school.com.cn/jquery/ajax_ajax.asp jQuery Ajax 参考手册 实例 通过 AJAX 加载一段文本...用于配置 Ajax 请求键值对集合。 可以通过 $.ajaxSetup() 设置任何选项默认值。 参数 options 类型:Object 可选。AJAX 请求设置。...这个值将用来取代 jQuery 自动生成随机函数名。这主要用来让 jQuery 生成度独特函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。...如果要指定回调函数参数名来取代默认 callback,可以通过设置 $.ajax() jsonp 参数。 注意:JSONP 是 JSON 格式扩展。...如果使用了后者形式,则数据再发送器会被转换成查询字符串。这个处理过程也可以通过设置 processData 选项为 false 来回避。

14.5K30
领券