我正在尝试根据所选图像绘制画布图像
<canvas id="canvas" ></canvas>
<input type="file" id="file-input">
的Javascript
$(function() {
$('#file-input').change(function(e) {
var file = e.target.files[0],
imageType = /image.*/;
if (!file.type.match(imageType))
return;
var reader = new FileReader();
reader.onload = fileOnload;
reader.readAsDataURL(file);
});
function fileOnload(e) {
var $img = $('<img>', { src: e.target.result });
var canvas = $('#canvas')[0];
var context = canvas.getContext('2d');
$img.load(function() {
context.drawImage(this, 0, 0);
});
}
});
这会将文件写入画布,但我面临的问题是,它只将图像写入画布的高度和宽度。
如何将画布宽度高度自动设置为所选图像的高度和宽度
与原始图像相比,正在绘制的图像非常庞大
答案 0 :(得分:2)
由于我没有足够的分数,我无法评论以前的答案。
你应该更新高度&amp;画布dom元素的宽度。
var canvas = document.getElementsByTagName('canvas')[0];
$img.load(function() {
canvas.width = this.width;
canvas.height = this.height;
context.drawImage(this, 0, 0);
});
工作演示:jsfiddle
答案 1 :(得分:1)
$(function() {
$('#file-input').change(function(e) {
var file = e.target.files[0],
imageType = /image.*/;
if (!file.type.match(imageType))
return;
var reader = new FileReader();
reader.onload = fileOnload;
reader.readAsDataURL(file);
});
function fileOnload(e) {
var $img = $('<img>', { src: e.target.result });
var canvas = $('#canvas')[0];
var context = canvas.getContext('2d');
$img.load(function() {
canvas.width = this.width;
canvas.height = this.height;
context.drawImage(this, 0, 0);
});
}
});
答案 2 :(得分:0)
加载后您必须获取图像的尺寸(width
和height
),并将画布的尺寸设置为其值:
$img.load(function() {
canvas.width = this.width;
canvas.height = this.height;
context.drawImage(this, 0, 0);
});