简体   繁体   English

如何在画布上按比例缩放图像?

[英]How to add an image to a canvas, scaled to size?

I can add a local image to my canvas. 我可以在画布上添加本地图像。 My problem though is that I can only scale the image by something like 0.5 but this isn't very helpful because images are always different. 我的问题是,我只能按0.5缩放图像,但这并不是很有用,因为图像总是不同的。 How might I have the image scale to say 400px wide, but the rest resize proportionally so that no matter the size of the chosen image, things fit and it isn't a guessing game (currently I have a link to an image resizer, I'm trying to remove the need)? 我怎么能说图像比例为400px宽,但其余部分按比例调整大小,以便无论所选择图像的大小如何,一切都合适,而且也不是一个猜谜游戏(目前,我有一个图像调整器的链接,我试图消除需求)?

I'm using fabricjs 1.7.21. 我正在使用fabricjs 1.7.21。

 var canvas = new fabric.Canvas("c"); canvas.setHeight(616); canvas.setWidth(446); // New Photo to Canvas document.getElementById('imgLoader').onchange = function handleImage(e) { var reader = new FileReader(); reader.onload = function(event) { var imgObj = new Image(); imgObj.src = event.target.result; imgObj.onload = function() { var image = new fabric.Image(imgObj); image.set({ left: 10, top: 10, }).scale(0.5); canvas.add(image); } } reader.readAsDataURL(e.target.files[0]); } 
 canvas { border: 1px solid #dddddd; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.21/fabric.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <label class="btn btn-default" id="imgLoader"> <span class="oi oi-image"></span> Add Image<input type="file" hidden> </label> <canvas id="c"></canvas> 

Try this: 尝试这个:

 var canvas = new fabric.Canvas("c"); canvas.setHeight(616); canvas.setWidth(446); // New Photo to Canvas document.getElementById('imgLoader').onchange = function handleImage(e) { var reader = new FileReader(); reader.onload = function(event) { var imgObj = new Image(); imgObj.src = event.target.result; imgObj.onload = function() { var image = new fabric.Image(imgObj); image.width = 400; image.height = 400; image.set({ left: 10, top: 10, }); canvas.add(image); } } reader.readAsDataURL(e.target.files[0]); } 

scaleToWidth / scaleToHeight was what I was looking for. scaleToWidth / scaleToHeight是我一直在寻找的东西。 You can find the documentation here . 您可以在此处找到文档。

Props to @Ben who commented this. 对此发表评论的@Ben的道具。 I wanted to close the question. 我想结束这个问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM