解决getImageData跨域问题

本文介绍了一种解决跨域使用HTML5的getImageData方法所引发的安全错误的方法。通过将图片转换为Base64编码的字符串直接嵌入HTML中,实现了让图片资源变为本地资源,从而解决了跨域问题。
在项目开发过程中要用到html5增加的getImageData方法来实现刮刮卡的效果,后台上传图片,手机端用手刮。在本地开发没遇到问题,上线之后发现刮不了,提示"Uncaught SecurityError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The canvas has been tainted by cross-origin data."错误。后在网上搜索了下,发现getImageData此方法不允许操作非此域名外的图片资源,即使是子域也不行。因为在线上文件上传目录是部署在子域名上的,而本地则是一个域名上,因此在线上才发现问题。

        出现问题了,就解决问题呗。以前写篇博客“用php把图片编码嵌入到html”,可以把图片弄成字符串的格式嵌入在网页内,那么外站的图片资源不就变成本地的了么,用此方法一试,搞定。

 

 


 

<?php  

$pic = '1_molaifeng.jpg';  

$arr = getimagesize($pic);  

$pic = "data:{$arr['mime']};base64," . base64_encode(file_get_contents($pic));  

?>  

<img src="<?php echo $pic ?>" />  

转载于:https://www.cnblogs.com/baiyijiahe/p/5227900.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值