【问题标题】:Change generated image resolution Fabric.js更改生成的图像分辨率 Fabric.js
【发布时间】:2013-09-28 12:26:09
【问题描述】:

我正在创建一个基于Fabric.js 的图像编辑器,但我的最终图像分辨率存在问题。我需要以高分辨率生成图像,但我的编辑器的尺寸在低分辨率下以像素为单位。

例如:画布有 800 像素 x 600 像素,我需要一个 100 厘米 x 400 厘米的最终图像,换句话说,是实际尺寸。

【问题讨论】:

    标签: javascript jquery css fabricjs


    【解决方案1】:

    让我在这里根据我的经验提出一些想法 -

    1. 如果最终分辨率很大,但不是特别大,您可以在生成图像数据之前将画布缩放到其大小(例如 toDataURL)
    2. 如果最终分辨率特别大,我建议你可以直接从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 上试过,因为它真的很大,所以如果你不能从 fabric.js 做,用 PHP 做,否则这个链接可能会有所帮助Convert SVG image to PNG with PHP

    100cm = 39.3 英寸和 400cm = 39.3 * 4 英寸,如果您有 300dpi 图像用于最终输出。您将需要宽度 = 39.3 * 300 和高度 39.3 * 4 * 300 大小,浏览器是否可以处理,我不确定。

    【讨论】:

    • 很好的答案,关于我如何定位背景的任何想法?它似乎忽略了它,大概是因为背景没有设置为 canvas.object
    • 你救了我的命
    • 如果canvas.Offset() 没有保存到变量中,它会做什么——比如在这个 sn-p 中它的意义何在?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    相关资源
    最近更新 更多