toDataURL() 不返回有效图像,除非先发出警报
toDataURL() not returning valid image unless alert first
我正在从HTML表单上传图像并使用Image()在画布上调整图像大小。
这是我所拥有的:
var MAX_HEIGHT = 10;
var target = document.getElementById("filesInfo");
var preview = document.getElementById("preview");
var canvas = document.getElementById("canvas");
var render = function(src)
{
var img = new Image();
img.onload = function()
{
if(img.height > MAX_HEIGHT)
{
img.width *= MAX_HEIGHT / img.height;
img.height = MAX_HEIGHT;
}
var ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
preview.style.width = img.width + "px";
preview.style.height = img.height + "px";
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img, 0, 0, img.width, img.height);
};
img.src = src;
};
function fileSelect(evt)
{
var files = evt.target.files;
var result = '';
var file;
for (var i = 0; file = files[i]; i++)
{
if (!file.type.match('image.*'))
continue;
reader = new FileReader();
reader.onload = function(e)
{
render(e.target.result);
};
reader.readAsDataURL(file);
alert('foo');
result += '<li>' + file.name + ' ' + file.size
+ ' bytes <img src="'+document.getElementById("canvas").toDataURL()+'"></li>';
}
document.getElementById('filesInfo').innerHTML = '<ul>' + result + '</ul>';
}
如果我删除警报('foo'),则图像数据不会进入(它是一个空白图像)。 只有当我插入警报时,它才真正起作用。 我在这里错过了什么?
你的代码很好,你只需要等到加载完成,警报会强制代码,导致实际代码中断,然后继续:
reader.readAsDataURL(file);
reader.onloadend = function () {
result += '<li>' + file.name + ' ' + file.size + ' bytes <img src="'+document.getElementById("canvas").toDataURL()+'"></li>';
}
源:https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsDataURL
相关文章:
- Imgur API图像搜索未返回数据
- instafeed.js返回的居中图像
- 如何让 IF ELSE 返回图像
- 使用 WebClient 类返回图像数据并在标记中呈现图像
- 高图表导出图表在 IE8 或 IE9 中不返回图像
- 以 HTML 形式返回图像
- 使用jquery如何在浏览器中返回图像后更改图像src属性的http参数
- 如何使用.Net MVC FileContenResult通过ajax返回图像
- 单击后从ALTSRC返回图像SRC
- 检查某个URL是否存在并返回图像
- PHP:检测文本中的url,检查url是图像还是网站,然后返回图像
- 从RESTful WCF服务返回图像
- 在React Native中从Firebase数据库/存储中加载并返回图像
- Google Feed API是否支持从RSS提要返回图像?
- 解析外部HTML并返回图像
- 返回图像的目录
- Twitter API不返回图像
- 如何通过AJAX调用从java bean返回图像
- 用Javascript从HTTP Post请求返回图像
- 返回图像或错误的地址(如果不存在)