【问题标题】:Draw Image on Canvas and export print quality image在画布上绘制图像并导出打印质量图像
【发布时间】:2016-08-01 11:14:18
【问题描述】:

我在做什么:

我正在使用Fabric.js 开发一个画布应用程序。用户可以在画布中放置图像或文本

我想做什么:

当用户下载图像时,用户应该能够打印它。目前我正在研究长度:5 X 8 (英寸)。在Fabric.js 中,toDataURL() 函数默认会给出72 DPI 图像,我打算使用PHP 将其转换为300dpi 图像。

所以要创建5X8300dpi 的高质量图像,图像应该是1500px X 2400px。但是我不能给用户那么多空间,因为它不是很直观。

所以,我按照下面链接中的建议做了

What is the best practice to export canvas with high quality images?

问题:

但是我遇到了麻烦。当用户放置文本或图像时,它看起来非常小。当我单击文本或图像时,角落和边框几乎看不到。它考虑了画布的相对大小。请参阅Fiddle

【问题讨论】:

    标签: javascript html canvas fabricjs


    【解决方案1】:

    您不应该直接使用尺寸设置画布样式。 设置画布属性宽高,不超过屏幕尺寸:

    <canvas width="500" height="400" ></canvas>
    

    导出到图片时使用

    canvas.toDataURL({multiplier: 4});
    

    这将为您提供一个比屏幕大 4 倍的画布。

    使用样式设置画布以减小其尺寸并使用 dataURL 拥有更大的图像会使整体体验变差。

    这种风格用fabricjs 还没有准备好理解的东西把画布挤到你的眼前。所以你不会得到正常大小的控件。

    //remove those
    width:400px !important;
    height:600px !important;
    

    http://jsfiddle.net/Q3TMA/1043/

    【讨论】:

    • 但这对用户来说不会那么容易使用..想象一下 1500px X 2400px 的长度?
    • 将画布设置为具有正确尺寸的画布,在屏幕上以 1 对 1 像素进行打印,在后端使用您喜欢的尺寸进行打印。
    • Cudn 跟着你...你能举个例子吗?
    • 试图改进答案。
    • 我不知道 FabricJS 有有用的 multiplier 属性——感谢您提供的信息! :-)
    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2018-12-09
    • 1970-01-01
    • 2013-10-28
    • 2013-11-11
    • 2014-04-12
    相关资源
    最近更新 更多