【问题标题】:ctx canvas image decrease width from bottom sidectx 画布图像从底部减小宽度
【发布时间】:2019-02-19 12:48:40
【问题描述】:

我使用下面的代码在画布中绘制了图像,其中我将元素图像与折叠杯图像组合在一起

canvas2(getFullElementImage);

function canvas2(getFullElementImage) {

    var canvas = document.getElementById("finalCanvas");
    var ctx = canvas.getContext("2d");
    var productImg = new Image();
    productImg.onload = function () {
        var iw = productImg.width;
        var ih = productImg.height;
        console.log("height");

        canvas.width = iw;
        canvas.height = ih;

        ctx.drawImage(productImg, 30, 0, productImg.width, productImg.height,
            0, 0, iw, ih);
        loadUpperIMage()
    };
    productImg.src = "https://res.cloudinary.com/faizykhan1212/image/upload/v1550583008/folded_cup_1.png"

    function loadUpperIMage() {
        var img = new Image();
        img.src = getFullElementImage;

        img.onload = function () {

            var iw = img.width;
            var ih = img.height;

            // alert(iw)

            var xOffset = 160, //left padding
                yOffset = 110; //top padding

            var a = 190.0; //image width
            var b = 20; //round ness

            var scaleFactor = iw / (4 * a);

            // draw vertical slices
            for (var X = 0; X < iw; X += 1) {
                var y = b / a * Math.sqrt(a * a - (X - a) * (X - a)); // ellipsis equation
                ctx.drawImage(img, X * scaleFactor, 0, iw / 3, ih, X + xOffset, y + yOffset, 1, 574);

            }
        };
    }

};

图像的显示方式如下:

我希望它从底部减小宽度,以便它适合左右角的杯子。

谢谢

【问题讨论】:

标签: javascript jquery canvas


【解决方案1】:

也许您可以将 webGL 用于此类示例。 这段代码很棒。我对这部分做了一些校准:

      var xOffset = 174, //left padding
          yOffset = 110; //top padding

        var a = 180.0; //image width
        var b = 80; //round ness

canvas2();

function canvas2() {

    var canvas = document.getElementById("finalCanvas");
    var ctx = canvas.getContext("2d");
    var productImg = new Image();
    productImg.onload = function () {
        var iw = productImg.width;
        var ih = productImg.height;
        console.log("height");

        canvas.width = iw;
        canvas.height = ih;

        ctx.drawImage(productImg, 30, 0, productImg.width, productImg.height,
            0, 0, iw, ih);
        loadUpperIMage()
    };
    productImg.src = "https://res.cloudinary.com/faizykhan1212/image/upload/v1550583008/folded_cup_1.png"

    function loadUpperIMage() {
        var img = new Image();
        img.src = "https://res.cloudinary.com/faizykhan1212/image/upload/v1550655724/download-3.png";

        img.onload = function () {

            var iw = img.width;
            var ih = img.height;

            // alert(iw)

            var xOffset = 174, //left padding
                yOffset = 110; //top padding

            var a = 180.0; //image width
            var b = 80; //round ness

            var scaleFactor = iw / (4 * a);

            // draw vertical slices
            for (var X = 0; X < iw; X += 1) {
                var y = b / a * Math.sqrt(a * a - (X - a) * (X - a)); // ellipsis equation
                ctx.drawImage(img, X * scaleFactor, 0, iw / 3, ih, X + xOffset, y + yOffset, 1, 574);

            }
        };
    }

};
&lt;canvas id="finalCanvas"&gt;&lt;/canvas&gt;

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2010-09-26
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2023-03-22
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多