只有在Mozilla Firefox中第二次尝试时,才能在画布上绘制全尺寸图像
Drawing an image in its full size in a canvas works only on the second try in Mozilla Firefox
我正在尝试从用户那里获取图像并在其中绘制内容。但我在MF中有一种奇怪的行为,只在画布上显示全尺寸的图像。我有以下代码:
<!DOCTYPE html>
<html>
<body>
<input type="file" id="input">
<div id="main"></div>
<script>
document.getElementById('input').onchange = function() {
var file_reader = new FileReader();
file_reader.onload = function() {
var img = new Image();
img.src = file_reader.result;
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, img.width, img.height)
document.getElementById('main').appendChild(canvas)
}
file_reader.readAsDataURL(document.getElementById('input').files[0])
}
</script>
</body>
</html>
在Chrome和Opera中,一切都很好,但在Mozilla Firefox中,当我选择图像时,什么都不会发生,添加的画布宽度为0,高度为0。然后,如果我再次重新选择它,它就会出现,因此对于每个图像,我必须选择一次,什么都不发生,然后在第二次、第三次等时候,一切都很好
为什么会发生这种情况?
我会尝试在img.onload回调中在画布上绘制图像。
相关文章:
- 画布:逐像素绘制图像并请求动画帧计时
- WebGL绘制图像
- 多重绘制图像后画布清除
- 可以'清除Rect后,不要在画布上绘制图像
- 如何在单页应用程序中重新绘制图像
- 画布中的图像在绘制图像后立即消失
- 使用Canvas绘制图像
- 如何在javascript中在图像上绘制图像(没有CSS和HTML)
- 使用模式在 HTML5/JS 中绘制图像
- 绘制并重新绘制图像以模拟动画是行不通的
- Dart Canvas未绘制图像
- 在新窗口中打开时,未在画布中绘制图像
- 在画布上绘制图像并导出打印质量的图像
- 用一个加载项绘制图像阵列
- html画布绘制图像不起作用
- Chrome 31.0 HTML5画布绘制图像
- 用HTML5和Javascript绘制图像
- 在新框架上绘制图像,同时仍然使用P5.js中的利萨茹曲线
- 如何在画布上更快地绘制图像
- 在 HTML5 画布中绘制图像,同时保留图像