首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jCrop HTML5画布Base64

jCrop HTML5画布Base64
EN

Stack Overflow用户
提问于 2013-10-30 18:10:17
回答 2查看 2.7K关注 0票数 1

我正试着和jCropcanvas合作。

与其将图像发送到服务器,然后再用裁剪后的图像返回,我尝试使用画布直接对其进行裁剪,因为结果是,我在base64图像中转换裁剪并发送到服务器。

我有一个例子JSFiddle

我裁剪图像,然后在画布中转换,但我不能在base64中转换图像。出现以下错误:

代码语言:javascript
复制
"SecurityError: The operation is insecure."

我试过..。

代码语言:javascript
复制
console.log(canvas.toDataURL());

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-30 18:18:52

一般来说,这个问题是由于CORS (跨源资源共享)需求没有得到满足。

为了避免这种情况,您可以:

  • 提供从与页面相同的来源裁剪的图像。
  • 通过向图像提供crossOrigin属性请求跨源使用
  • 使用代理通过您的服务器从外部站点服务映像(在这种情况下,大部分的点丢失了,在本地完成所有事情)。

此外:

  • 在测试时,不要使用本地file://协议,而是使用轻型本地服务器(即。猫鼬)

否则,每次使用toDataURL (或getImageData)时都会收到一个安全错误。

关于从外部服务器请求CORS使用:您只能请求这样的使用,但这取决于服务器是否授予权限。

请求下列任何一项:

代码语言:javascript
复制
<img src="..." crossOrigin="anonymous" >

或者来自JavaScript:

代码语言:javascript
复制
var img = new Image;

img.onload = handleOnLoad;
img.crossOrigin = 'anonymous';
img.src = '...';

如果拒绝,图像将根本不会加载。

票数 0
EN

Stack Overflow用户

发布于 2014-01-16 20:22:01

我有这个问题。问题是,当你在画布上已经有了什么东西,然后把其他东西放在上面,它就会被污染。我的解决办法是删除画布元素并替换它,然后在其上放置一个新的图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19690673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档