【发布时间】:2020-09-18 14:13:48
【问题描述】:
我有来自其他服务器的 img
<img src="https://cloudserver/1.jpg">
单击此 img 我想转换为 File 对象以向服务器发送 post 请求。 在这个函数之后,我看到数据所有字节 = 0,不明白发生了什么?在搜索中,我发现需要等待然后图像加载完成但我 100% 已经加载图像的问题。
imgToFile: function (imageElement){
imageElement.crossOrigin="anonymous";
var canvasElement = document.createElement("canvas");
canvasElement.width = imageElement.width;
canvasElement.height = imageElement.height;
var canvasContext = canvasElement.getContext("2d");
canvasContext.drawImage(imageElement, 0, 0);
var imageData = canvasContext.getImageData(0, 0, imageElement.width, imageElement.height).data;
var buffer = new Uint8Array(imageData.length);
for(var index = 0; index < imageData.length; index++)
buffer[index] = imageData[index];
var imageBlob = new Blob(buffer);
return new File([imageBlob], /\/([^/]+)$/.exec(imageElement.src)[1]);
}
【问题讨论】:
-
请分享一个工作示例,展示如何调用所有方法。很奇怪你有零,你应该只有一个错误,因为设置
crossOrigin不会使图像重新获取资源,这意味着你应该通过绘制这个图像来污染你的画布,并且你不应该在@之后到达任何东西987654325@. -
嗨,我添加了沙盒
标签: javascript canvas html5-canvas blob fileapi