【发布时间】:2018-11-12 20:12:58
【问题描述】:
在通常的画布 css 宽度和客户端宽度可能不相等,如何在 Fabricjs 上得到这个?举个例子:我想在一个页面上有 640*360px 的画布,里面有 1280*720px 的图像。 我知道我可以缩放图像,但 dataUrl 会给我一个更小的图片,不是吗?
【问题讨论】:
标签: fabricjs
在通常的画布 css 宽度和客户端宽度可能不相等,如何在 Fabricjs 上得到这个?举个例子:我想在一个页面上有 640*360px 的画布,里面有 1280*720px 的图像。 我知道我可以缩放图像,但 dataUrl 会给我一个更小的图片,不是吗?
【问题讨论】:
标签: fabricjs
有一个solution。您可以使用 CSS 尺寸初始化 Fabric.js,然后使用 backstoreOnly 标志初始化 setDimensions,或者使用所需的客户端尺寸初始化并使用 setDimensions 和 cssOnly 标志。
示例 #1:
var canvas = new fabric.Canvas('c', {width: 640, height: 360});
canvas.setDimensions({width: 1280, height: 720}, {backstoreOnly: true});
示例 #2:
var canvas = new fabric.Canvas('c', {width: 1280, height: 720});
canvas.setDimensions({width: '640px', height: '360px'}, {cssOnly: true});
【讨论】:
var canvas = new fabric.Canvas('c', {width: 240px, height: 300px}); canvas.setDimensions({width: '480px', height: '600px'}, {cssOnly: true});
您可以使用画布http://fabricjs.com/docs/fabric.StaticCanvas.html#setWidth 的setWidth/setHeight 属性更改画布的大小
例如
canvas = new fabric.Canvas('c');
canvas.setWidth(640);
canvas.setHeight(360);
虽然你应该澄清你的意思。
【讨论】:
setWidth 和 setHeight 更改 css 和客户端大小。 720p 图像会溢出 640*360 画布。就像我之前写的那样,我可以为图像设置scale,但是 1. 画布大小是响应式的,因此每次缩放可能不同 2. 裁剪后的图像将小于原始未缩放的裁剪图像。