- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
看起来这个问题主要与我的 aws s3 存储桶 CORS 配置有关
我添加:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>https://www.example.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
到我的存储桶 CORS 配置,但这也没有帮助。由于某种原因,我能够将照片添加到 Canvas 上(取决于代码),但无法使用来自 AWS 的图像保存 Canvas
<小时/>我有一个 Fabric.js Canvas ,它被来自亚马逊 s3 的图像污染了。我不确定到底发生了什么。
当我尝试通过单击“保存”来保存 Canvas 时:
控制台上的 Chrome 错误:未捕获 DOMException:无法在“HTMLCanvasElement”上执行“toDataURL”:受污染的 Canvas 可能无法导出。
控制台上的 FireFox 错误:操作不安全
https://jsfiddle.net/je3mL5go/1/
在 jsfiddle 中,当添加行 }, {crossOrigin: 'Anonymous'});
时它会起作用。存在。
在 Heroku 上使用 s3 图像进行生产:
在 FireFox 中,我可以从选择菜单中选择图像并将其添加到 Canvas 中。我会收到如上所述的错误,但如果我重复单击“保存”按钮,经过足够的点击(通常是 5-30 次)后,它将允许我将 Canvas 另存为 png。
在 Chrome 中,这种“黑客”似乎根本不起作用。
这背后有解释吗?
似乎因为我在 AWS S3 中托管图像,所以这也会对其产生影响。但即使如此,上面的示例(在 FireFox 中重复单击)仍然有效。
尝试:
与:
function updateTshirtImage(imageURL){
fabric.Image.fromURL(imageURL, function(img) {
img.scaleToHeight(300);
img.scaleToWidth(300);
img.crossOrigin = 'anonymous';
canvas.centerObject(img);
canvas.add(img);
canvas.renderAll();
});
};
我可以上传图像,但是当我单击“保存”时:
我遇到了与上面相同的错误。
当我使用时:
function updateTshirtImage(imageURL){
fabric.Image.fromURL(imageURL, function(img) {
img.scaleToHeight(300);
img.scaleToWidth(300);
canvas.centerObject(img);
canvas.add(img);
canvas.renderAll();
}, {crossOrigin: 'anonymous'});
};
选择图片上传时出错
No 'Access-Control-Origin-Header' is present...
尝试:
function updateTshirtImage(imageURL){
var rand = '?'+Math.random();
var no_cors = new Image();
no_cors.onload = loadCORS;
no_cors.src = imageURL + rand;
function loadCORS(){
var with_cors = new Image();
with_cors.crossOrigin = 'anonymous';
with_cors.src = no_cors.src;
with_cors.onload = function(){console.log('loaded');};
with_cors.onerror = function(){console.error('failed');};
fabric.Image.fromURL(with_cors.src, function(img) {
img.scaleToHeight(300);
img.scaleToWidth(300);
canvas.centerObject(img);
canvas.add(img);
canvas.renderAll();
}, {crossOrigin: 'anonymous'});
}
};
var images = <%= images_2.to_h.to_json.html_safe %>
document.getElementById("tshirt-design").addEventListener("change", function(){
updateTshirtImage(images[this.value]);
}, false);
错误:
Chrome:404 错误
Firefox:没有错误,不工作。
这里的问题是我在向 aws 请求之前以某种方式更改了 aws s3 的 url 吗?
最佳答案
添加:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>https://www.example.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
确实达到了目的。看来我只需要等待。第二天我测试了一下,成功了!
澄清一下,上面的头代码可能有点过分了,但这就是我目前所处的位置。我将测试和“调试”并删除一些允许的方法,看看哪些方法是不需要的。
关于javascript - 未捕获的 DOMException : Failed to execute 'toDataURL' on 'HTMLCanvasElement' : Tainted canvases may not be exported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58534506/
我无法获取自定义 Canvas 元素的绘图上下文。 var customCanvas = Object.create(HTMLCanvasElement.prototype), ca
如何获取对 Canvas 句柄的 DOM 引用。我正在使用Delphi,IE11和相应的MSMHTML类型库,我怀疑它是沿着 canvasHandle := (HTMLDoc3.getElementB
根据我目前的理解,声明数据 URI 实际上是 URL 是不正确的。 因此,考虑到这一点,我说 JavaScript 函数 HTMLCanvasElement.getDataURL() 是否正确?被命名
我正在尝试从 Canvas 中获取 dataUrl 以用作各种元素上的 css 背景图像。但我总是收到以下错误 Uncaught TypeError: Object # has no method '
大家好, 我开始学习 Angular,我决定从 Langton Ant 算法的实现开始。 项目 独立查看器的来源在这里:https://github.com/Phreno/langton Angula
从图像(本地文件)绘制 Canvas 后,我尝试使用命令 ctx.canvas.toDataURL("image/png") 导出它 但是有一个错误: DOMException: Failed to
我有一个实用程序可以为视频生成缩略图并将其作为 HTMLCanvasElement 返回。我想在 React 中呈现该元素,如下所示: render () { return (
我想对生成的 Blob 进行检查,这需要我将自己的变量传递给回调。然而,toBlob() only passes the Blob 。如何将我自己的变量传递给回调?或者,是否有更好的方法来完成此任务,
我需要使用 javascript 打印 div..这个div的内容是生成的条形码..使用打印 div 元素的正常方法不起作用,因为条形码图像是由 php 文件生成的,不会出现在打印页面中。所以我决定使
我对 canvas 元素和方法 captureStream 遇到了奇怪的情况。根据文档 HTMLCanvasElement 有一个方法 captureStream。但是我的 Angular6 应用程序
当我尝试导出具有使用 OpenLayer 创建的多层的 map 时遇到问题。 这是我的 JS 代码: map.once('postcompose', function(event) {
是否可以使用 PhantomJS捕获网页屏幕而不将其保存到文件系统? 我需要这个,因为我想对页面屏幕截图进行一些后期处理(配色方案检测)。 颜色检测也是用 JS 进行的。( https://githu
Error: NotYetImplemented at HTMLCanvasElement.exports.nyi (C:\frontend_server_side_rendering\NewUIUX
我尝试在对象中制作一个签名 Canvas ,我在构造函数中声明了上下文,但他在函数中未定义。如何在函数上声明我的上下文? 函数绘制中的问题。 class Canvas{ constructor
我正在设置一个图像裁剪器,它会给我裁剪细节的宽度和高度、X 和 Y。使用它我正在创建预览图像(使用 Canvas )但是是否可以存储从 HTMLCanvasElement.toDataURL() 或
我有一个使用其他 UI 的大项目,其中很大一部分使用 GWT Canvas ,如果我想使用 domino-ui,我更愿意保留 GWT Canvas 代码。 最佳答案 是的,你可以。要么使用 eleme
这个问题已经有答案了: CanvasContext2D drawImage() issue [onload and CORS] (1 个回答) 已关闭 7 年前。 我从 facebook api 获取
我正在构建一个数组const myCanvas = document.getElementsByTagName('canvas')它实际上是有效的。它返回给我这样的东西: images: [ 0:
看起来这个问题主要与我的 aws s3 存储桶 CORS 配置有关 我添加: https://www.example.com PUT POST DELETE
我已经查看了其他问题,但仍然无法找到答案。 当用户单击“保存项目”按钮时,会触发此函数: function common_save_project() { var image = common_s
我是一名优秀的程序员,十分优秀!