文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JS怎么实现将图片URL转base64

2023-07-05 19:35

关注

本篇内容主要讲解“JS怎么实现将图片URL转base64”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS怎么实现将图片URL转base64”吧!

背景介绍

最近有个需求是将部分DOM生成图片上传到服务器,这里就直接用之前项目使用的 html-to-image。

然而,这次与上次不同的是有一个图片;其实,html-to-image也支持了存在图片的DOM生成截图(embed-images)。

出现意外

不出意外的就该出意外了:

JS怎么实现将图片URL转base64

很容易理解,就是跨域了请求了。注意,这里本来之前使用img标签是能正常请求的,并且也不用加crossorigin属性。 在调用html-to-image中加上mode: 'no-cors'依然不行。

进入正题吧

然后就想自己搞转base64吧,各种百度谷歌出来了

const image2Base64 = (url: string) => new Promise((resolve, reject) => {  if (!url) {    resolve('');    return;  }  const img = new Image();  img.crossOrigin = 'anonymous';  img.src = url;  img.onload = () => {    const canvas = document.createElement('canvas');    canvas.width = img.width;    canvas.height = img.height;    const ctx = canvas.getContext('2d');    ctx?.drawImage(img, 0, 0);    const data = canvas.toDataURL();    resolve(data);  };  img.onerror = () => {    reject('');  };});

特别需要注意的是:img标签属性是crossorigin,new Image需使用crossOrigin。 如果不设置crossOrigin会造成另一个问题:

JS怎么实现将图片URL转base64

在用canvas调用toDataURL方法中出错了。

然后又是各种百度谷歌,发现MDN有个权威又无语的解释:

JS怎么实现将图片URL转base64

提炼一下哈:指定crossorigin的图像,在canvas调用中不会出现tainted错误。

其实上面已经能解决大多数的问题了:

JS怎么实现将图片URL转base64

对,没猜错,事情没有绝对的,还是有个例的:

JS怎么实现将图片URL转base64

不知是这个图片服务器咋设置的,各种吧啦吧啦沟通也不给设置跨域白名单啥的,只能自己想办法了。

nodejs中间层转

const http = require('http');http.get(url, (res) => {  const chunks = [];  let size = 0;  res.on('data', (chunk) => {    chunks.push(chunk);    size += chunk.length;  });  res.on('end', () => {    const data = Buffer.concat(chunks, size);    const base64Data = data.toString('base64');    return base64Data;  });});

到此,相信大家对“JS怎么实现将图片URL转base64”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯