iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何解决使用canvas绘图时遇到的跨域问题
  • 447
分享到

如何解决使用canvas绘图时遇到的跨域问题

2023-06-09 14:06:22 447人浏览 八月长安
摘要

这篇文章主要介绍了如何解决使用canvas绘图时遇到的跨域问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。当在canvas中绘制一张外链图片时,我们会遇到一个跨域问题。示例

这篇文章主要介绍了如何解决使用canvas绘图时遇到的跨域问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

当在canvas中绘制一张外链图片时,我们会遇到一个跨域问题。

示例如下:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>crossorigin</title></head><body>    <canvas width="600" height="300" id="canvas"></canvas>    <img id="image" alt="">    <script>        var canvas = document.getElementById('canvas');        var ctx = canvas.getContext('2d');        var image = new Image();        image.onload = function() {            ctx.drawImage(image, 0, 0);            document.getElementById('image').src = canvas.toDataURL('image/png');        };        image.src = 'https://file.lsjlt.com/upload/202306/07/jijv3ep325c.jpg';    </script></body>

当在浏览器中打开这个页面时,你会发现这个问题:

Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

这是受限于 CORS 策略,会存在跨域问题,虽然可以使用图像,但是绘制到画布上会污染画布,一旦一个画布被污染,就无法提取画布的数据,比如无法使用使用画布toBlob(),toDataURL(),或getImageData()方法;当使用这些方法的时候 会抛出上面的安全错误

这是一个苦恼的问题,但幸运的是img新增了crossorigin属性,这个属性决定了图片获取过程中是否开启CORS功能:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>crossorigin</title></head><body>    <canvas width="600" height="300" id="canvas"></canvas>    <img id="image" alt="">    <script>        var canvas = document.getElementById('canvas');        var ctx = canvas.getContext('2d');        var image = new Image();        image.setAttribute('crossorigin', 'anonymous');        image.onload = function() {            ctx.drawImage(image, 0, 0);            document.getElementById('image').src = canvas.toDataURL('image/png');        };        image.src = 'Https://file.lsjlt.com/upload/202306/07/jijv3ep325c.jpg';    </script></body>

对比上面两段js代码,你会发现多了这一行:

image.setAttribute('crossorigin', 'anonymous');

就是这么简单,完美的解决了!

感谢你能够认真阅读完这篇文章,希望小编分享的“如何解决使用canvas绘图时遇到的跨域问题”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: 如何解决使用canvas绘图时遇到的跨域问题

本文链接: https://www.lsjlt.com/news/256399.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何解决使用canvas绘图时遇到的跨域问题
    这篇文章主要介绍了如何解决使用canvas绘图时遇到的跨域问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。当在canvas中绘制一张外链图片时,我们会遇到一个跨域问题。示例...
    99+
    2023-06-09
  • ajax如何解决跨域访问遇到的问题
    这篇文章给大家分享的是有关ajax如何解决跨域访问遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Ajax请求一个目标地址为非本域(协议、域名、端口任意一个不同)的web...
    99+
    2022-10-19
  • 如何解决使用openpyxl时遇到的问题
    本篇内容主要讲解“如何解决使用openpyxl时遇到的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决使用openpyxl时遇到的问题”吧!最近在用python处理Excel表格是遇到...
    99+
    2023-06-14
  • SpringBoot @PathVariable使用时遇到的问题及解决
    目录@PathVariable使用时遇到的问题第一个问题解决办法第二个问题解决办法@PathVariable 404问题@PathVariable使用时遇到的问题 第一个问题 接口:...
    99+
    2022-11-12
  • 使用springboot时,解决@Scheduled定时器遇到的问题
    目录@Scheduled定时器遇到的问题下面说一下@Scheduled 注解的几个参数一、可以通过配置文件配置进来的二、不可通过配置文件配置的 (作用相同)定时任务@Schedule...
    99+
    2022-11-12
  • 同时使用swiper和echarts遇到的问题如何解决
    今天小编给大家分享一下同时使用swiper和echarts遇到的问题如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。项...
    99+
    2023-07-06
  • 使用nodeAPI时遇到过异步问题如何解决
    这篇文章主要讲解了“使用nodeAPI时遇到过异步问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用nodeAPI时遇到过异步问题如何解决”吧!问题闲逛技术群时常常看到群友遇到异...
    99+
    2023-07-05
  • 使用@ApiModel遇到的问题如何解决
    这篇文章主要介绍了使用@ApiModel遇到的问题如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇使用@ApiModel遇到的问题如何解决文章都会有所收获,下面我们一起来看看吧。@ApiModel遇到的问...
    99+
    2023-07-02
  • 使用Java如何解决跨域问题
    本篇内容主要讲解“使用Java如何解决跨域问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“使用Java如何解决跨域问题”吧!跨域问题现在绝大多数公司的项目都是...
    99+
    2022-10-19
  • 如何解决使用ProcessBuilder的遇到的问题
    这篇文章主要介绍如何解决使用ProcessBuilder的遇到的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用ProcessBuilder踩到的坑最近使用ProcessBuilder执行命令,命令内容正确,但...
    99+
    2023-06-15
  • 详解如何解决使用JSON.stringify时遇到的循环引用问题
    程序员在日常做TypeScript/JavaScript开发时,经常需要将复杂的JavaScript对象通过JSON.stringify序列化成json字符串,保存到本地以便后续具体...
    99+
    2022-11-11
  • 如何解决MySQL使用中遇到的问题
    这篇文章给大家分享的是有关如何解决MySQL使用中遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。sql_mode=only_full_group_by引起group b...
    99+
    2022-10-18
  • 如何使用Nginx解决跨域问题详解
    目录先来说一下什么是同源策略什么是跨域?跨域分类Nginx解决跨域问题解释1、Access-Control-Allow-Origin2、Access-Control-Allow-He...
    99+
    2022-11-13
  • 在python项目中使用2sys.argv时遇到的问题如何解决
    这篇文章主要介绍了在python项目中使用2sys.argv时遇到的问题如何解决,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:python可以做什么Python是一种编程语言,内置了许多...
    99+
    2023-06-06
  • 如何解决angularjs跨页面传参遇到的一些问题
    小编给大家分享一下如何解决angularjs跨页面传参遇到的一些问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在app.js下添加 params:{'args':{}}...
    99+
    2022-10-19
  • 如何解决Mysql导入导出时遇到的问题
    这篇文章给大家分享的是有关如何解决Mysql导入导出时遇到的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。背景自从把我手上的任务全部转换成docker运行和管理之后,遇到了一...
    99+
    2022-10-18
  • python使用matplotlib绘图时图例显示问题的解决
    前言 matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包。在使用Python matplotlib库绘制数据图时,需要使用图例标注数据类别,但是传参时,会出现图例解释...
    99+
    2022-06-04
    图例 python matplotlib
  • 如何解决thinkphp5中图片处理遇到的问题
    这篇文章将为大家详细讲解有关如何解决thinkphp5中图片处理遇到的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。图片处理中遇到的问题我额外把图片的处理和上传封装成了一个类,返回保存的图片路径在图片...
    99+
    2023-06-15
  • Java轮询锁使用时遇到的问题怎么解决
    这篇文章主要介绍了Java轮询锁使用时遇到的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java轮询锁使用时遇到的问题怎么解决文章都会有所收获,下面我们一起来看看吧。问题演示当我们没有使用轮询锁之...
    99+
    2023-06-30
  • 使用JSON.stringify时遇到的循环引用问题怎么解决
    这篇文章给大家分享的是有关使用JSON.stringify时遇到的循环引用问题怎么解决的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。程序员在日常做TypeScript/JavaScript开发时,经常需要将复杂的...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作