gpt4 book ai didi

html - FabricJs canvas 到 dataurl 图像大小问题

转载 作者:搜寻专家 更新时间:2023-10-31 23:20:16 27 4
gpt4 key购买 nike

我正在尝试使用 canvas.toDataURL();

从 FabricJS Canvas 创建图像

我有 php 代码可以从这个 datauri 写入实际的图像文件。

此函数从 Canvas 创建 base64 数据 uri。在正常分辨率下(测试到全高清),这会生成我设置的实际尺寸图像(50pxX50px)。但在 4k 分辨率下,它会以某种方式生成双倍大小的图像。我尝试设置乘数、高度、宽度选项,但没有成功。

我创建了一个 jsfiddle here

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);
<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>

我已经对输出进行了控制台,以便您可以检查。

请帮我解决这个问题。

最佳答案

您有高像素密度显示器,这就是您遇到此问题的原因。阅读this 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
});

关于html - FabricJs canvas 到 dataurl 图像大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com