2017-08-08 401 views
0

我在客户端使用fabric.js允许用户在浏览器中创建图像,然后fabric.js序列化图像到json并发送到节点服务器。那么后端将JSON字符串反序列化为一个对象,并将该图像保存为本地文件。fabric.js最简单的方式来缩放整个图像

的问题是:

结果图像必须是大的,例如3000x3000px, 现在我使用<canvas width="600" height="600"></canvas> 用户上传的背景图像(3000x3000)到画布,然后我缩放这样说:

fabric.Image.fromURL(data, function (img) { 
      img.scale(0.2);    
      canvas.add(img).renderAll();    
     }); 

它填充整个画布。

然后用户将文本添加到画布上,例如偏移x,y:100,200,然后单击提交按钮。服务器必须将600x600图像未标定为3Kx3K,还要对文本进行未缩放并重新计算偏移量。有没有最简单的方法来操纵缩放?

+0

要保持图像分辨率还是只想使其尺寸为3k x 3k? – Yogesh

+0

我想保存用户的分辨率,我使用600x600,因为大图像会超出显示器尺寸 – Goolishka

回答

3

尽量保持图像在刻度1 检测图像应该得到多少缩放,缩放整个画布,而不是:一旦

canvas.setZoom(0.2) 

当你在节点的环境中,你装返回图像,将画布尺寸设置为图像尺寸。

缩放不会导出到json,因此您不必更改任何东西。

您应该获得与图像一样大的画布,并保存所有比例。

+0

这是最简单的方法,并且可以正常工作。谢谢 – Goolishka

相关问题