更改生成的图像分辨率结构.js
Change generated image resolution Fabric.js
我正在创建一个基于Fabric.js
的图像编辑器,但我在最终图像分辨率方面遇到了问题。我需要高分辨率的生成图像,但编辑器的尺寸是低分辨率的像素。
例如:画布有 800px x 600px,我需要一张 100 cm x 400 cm 的最终图像,换句话说,真实尺寸。
让我从我的经验中提出一些想法 -
- 如果最终分辨率很大,但不是很大,则可以在生成图像数据之前将画布缩放到其大小(例如,toDataURL)
- 如果最终分辨率非常大,我建议你可以直接从 PHP 处理
对于第一个——
var originWidth = canvas.getWidth();
function zoom (width)
{
var scale = width / canvas.getWidth();
height = scale * canvas.getHeight();
canvas.setDimensions({
"width": width,
"height": height
});
canvas.calcOffset();
var objects = canvas.getObjects();
for (var i in objects) {
var scaleX = objects[i].scaleX;
var scaleY = objects[i].scaleY;
var left = objects[i].left;
var top = objects[i].top;
objects[i].scaleX = scaleX * scale;
objects[i].scaleY = scaleY * scale;
objects[i].left = left * scale;
objects[i].top = top * scale;
objects[i].setCoords();
}
canvas.renderAll();
}
zoom (2000);
// here you got width = 2000 image
var imageData = canvas.toDataURL({
format: 'jpeg',
quality: 1
});
zoom (originWidth);
我从来没有尝试过在 100cm x 400cm 上,因为它真的很大,所以如果你不能从织物.js做,用 PHP 做,否则,这个链接可能会有所帮助 使用 PHP 将 SVG 图像转换为 PNG
100cm = 39.3英寸和 400cm = 39.3 * 4 英寸(如果您有 300dpi 图像用于最终输出)。您将需要宽度= 39.3 * 300和高度39.3 * 4 * 300大小,如果浏览器可以处理它,我不确定。
相关文章:
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 更改JSON对象的结构
- 角度控制器结构
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 检测图像分辨率
- 使用递归属性迭代保留属性结构
- 如何将我的json结构转换为C3.js所需的列结构
- 嵌套对象结构
- Redux应用程序结构-在哪里放置服务/业务逻辑
- 用于视频类型的MongoDB结构's
- javascript和php中的pancard结构验证
- 如何在砖石结构中订购DOM
- 如何解析结构不良的 html 代码
- 访问嵌套函数结构中的JavaScript父函数变量
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- 从json对象聚集数据并创建层次结构
- 在我的目录结构中,将单元测试助手源文件放在哪里
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- Html5-使用SVG路径绘制的组织层次结构在左手边被剪裁
- 更改生成的图像分辨率结构.js