Dee*_*kal 3 html canvas fabricjs
我正在尝试使用 FabricJS 画布创建图像canvas.toDataURL();
我有 php 代码,它从这个 datauri 写入实际的图像文件。
此函数从画布创建 base64 数据 uri。在正常分辨率(测试到全高清)下,这会生成我设置的实际尺寸图像(50pxX50px)。但在 4k 分辨率下,它会以某种方式生成双倍尺寸的图像。我尝试设置倍数、高度、宽度选项,但没有成功。
我在这里创建了一个jsfiddle
var canvas = new fabric.Canvas('myCanvas');
canvas.setHeight(50);
canvas.setWidth(50);
canvas.setBackgroundColor('rgb(59,173,160)');
// create a rectangle object
var rect = new fabric.Rect({
left: 0,
top: 0,
fill: 'blue',
width: 20,
height: 20
});
// "add" rectangle onto canvas
canvas.add(rect);
var img = canvas.toDataURL({
format: 'png',
multiplier: 1,
left: 0,
top: 0,
width: 50,
height: 50
});
console.log(img);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.3/fabric.min.js"></script>
<canvas id="myCanvas" style="border: 2px solid red;">
Your browser does not support the HTML5 canvas tag.
</canvas>Run Code Online (Sandbox Code Playgroud)
我有控制台输出,以便您可以检查。
请在这件事上给予我帮助。
您有高像素密度的显示器,这就是您遇到此问题的原因。请在developer.mozilla.org 上阅读 有关设备像素比的简短主题。
您应该将宽度和高度除以设备的像素比。
尝试这个:
var ratio = window.devicePixelRatio;
var img = canvas.toDataURL(
{
format: 'png',
multiplier: 1,
left: 0,
top: 0,
width: 50 / ratio ,
height: 50 / ratio
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4878 次 |
| 最近记录: |