Javascript 如何使用fabricjs从HTML5画布中的本地硬盘上传图像文件 fabric.Image.fromURL('Image.jpg',函数(img){在这里输入代码 var oImg=img.set({左:50,上:100,角:00})。刻度(0.9); canvas.add(oImg.renderAll(); canvas.setActiveObject(oImg); });
我正试图通过输入标签从硬盘上传图像文件。这是我的示例代码。告诉我如何更改此脚本,以便从输入中选择图片。为什么不在输入字段上使用更改处理程序 如果您添加一个idJavascript 如何使用fabricjs从HTML5画布中的本地硬盘上传图像文件 fabric.Image.fromURL('Image.jpg',函数(img){在这里输入代码 var oImg=img.set({左:50,上:100,角:00})。刻度(0.9); canvas.add(oImg.renderAll(); canvas.setActiveObject(oImg); });,javascript,html,html5-canvas,fabricjs,Javascript,Html,Html5 Canvas,Fabricjs,我正试图通过输入标签从硬盘上传图像文件。这是我的示例代码。告诉我如何更改此脚本,以便从输入中选择图片。为什么不在输入字段上使用更改处理程序 如果您添加一个id <html> <input type="file" name="Image"> </html> <script> fabric.Image.fromURL('image.jpg', function(img) {enter code here var oImg = img.set({ l
<html>
<input type="file" name="Image">
</html>
<script>
fabric.Image.fromURL('image.jpg', function(img) {enter code here
var oImg = img.set({ left: 50, top: 100, angle: 00 }).scale(0.9);
canvas.add(oImg).renderAll();
canvas.setActiveObject(oImg);
});
</script>
您可以使用HTML5文件阅读器查看图像,而无需上传图像并将其添加到画布。
var canvas=newfabric.canvas('canvas');
document.getElementById('file').addEventListener(“更改”,函数(e){
var file=e.target.files[0];
var reader=new FileReader();
reader.onload=函数(f){
var数据=f.target.result;
fabric.Image.fromURL(数据、函数(img)){
var oImg=img.set({左:50,上:100,角:00})。刻度(0.9);
canvas.add(oImg.renderAll();
canvas.setActiveObject(oImg);
});
};
reader.readAsDataURL(文件);
});代码>
这里有一个工作示例:
HTML
您只需使用FileReader将图像文件读入base64格式,并将fabric.image
添加到画布
但是,文件大小有限制。它因浏览器而异:角度解决方案:
打字稿:
var readFile = function(e) {
var input = e.target;
var reader = new FileReader();
reader.onload = function(){
var img = document.createElement('img');
img.src = reader.result;
var image = new fabric.Image(img);
canvas.add(image);
};
reader.readAsDataURL(input.files[0]);
};
document.getElementById('file').addEventListener('change', readFile);
var canvas = new fabric.Canvas(document.getElementById('canvas'), {
backgroundColor: '#c8c8c8'
});
HTML:
选择文件
如何在fabric js中使用change handler?我会查看FabricJS文档。您的问题是-afaik-识别用户选择文件的时间。未捕获类型错误:无法读取null的属性'addEventListener',我在此行文档中遇到此错误。getElementById('image')。addEventListener(“更改”,函数(e){@SalmanUllah如果您在OP中以您的示例为例,它是Image
而不是Image
。我尝试了不同的id,但仍然得到相同的错误。您是否为输入设置了id?是的,我在输入中设置了id=“file”,并为文档设置了相同的id。getElementById(“文件”)未捕获的TypeError:无法读取null的属性'addEventListener',我仍然收到此错误运行此示例时是否收到此错误?因为这几乎不可能发生。我假设您尝试通过复制上面的代码来实现此操作,但缺少了一些内容。您必须具有id为“file”的输入字段不,我确实将我的输入id更改为id=“file”。因此,您可能在其他位置有错误。请将代码放在这里。哦,对不起,我没有检查我的输入id。非常感谢。它现在正在上载我的图片。但当我单击它时,它消失了。
//assuming jquery
$("#Image").on("change", function(e) {
//run your code here
});
<!DOCTYPE html>
<html>
<head>
<script src="//cdnjs.cloudflare.com/ajax/libs/fabric.js/1.4.13/fabric.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<input id="file" type="file" accept="image/*">
<canvas id="canvas" width="600" height="600"></canvas>
</body>
</html>
var readFile = function(e) {
var input = e.target;
var reader = new FileReader();
reader.onload = function(){
var img = document.createElement('img');
img.src = reader.result;
var image = new fabric.Image(img);
canvas.add(image);
};
reader.readAsDataURL(input.files[0]);
};
document.getElementById('file').addEventListener('change', readFile);
var canvas = new fabric.Canvas(document.getElementById('canvas'), {
backgroundColor: '#c8c8c8'
});
uploadImage(event) {
if (event.target.files.length > 0) {
const file = event.target.files[0];
const reader = new FileReader();
reader.onload = (e: any) => {
const data = e.target.result;
fabric.Image.fromURL(data, img => {
this.canvas.add(img);
this.canvas.centerObject(img);
});
};
reader.readAsDataURL(file);
}
}
<button type="button" mat-raised-button (click)="fileInput.click()">Choose File</button>
<input hidden (change)="uploadImage($event)" #fileInput type="file" id="file">