【发布时间】:2020-08-17 02:52:35
【问题描述】:
我需要使用 javascript 将图像包裹在杯子的另一个图像周围,我发现了这个: Wrap an image around a cylindrical object in HTML5 / JavaScript
这有助于加载左侧有杯子手柄的图像。但是,当使用相同的函数(调整位置值)时,图像会应用不透明度。我无休止地搜索以找出发生这种情况的原因,但我一无所获:/
这是用于包装带有右手柄的杯子的图像的函数:
function canvas2() {
var canvas = document.getElementById('canvas2');
var ctx = canvas.getContext('2d');
var productImg = new Image();
productImg.onload = function() {
var iw = productImg.width;
var ih = productImg.height;
canvas.width = iw;
canvas.height = ih;
ctx.drawImage(
productImg,
0,
0,
productImg.width,
productImg.height,
0,
0,
iw,
ih
);
loadUpperIMage();
};
productImg.src =
'https://i.ibb.co/B2G8y1m/white-right-ear.jpg';
function loadUpperIMage() {
var img = new Image();
img.src =
'https://i.ibb.co/BnQP0TL/my-mug-image.png';
img.onload = function() {
var iw = img.width;
var ih = img.height;
var xOffset = 48, //left padding
yOffset = 68; //top padding
var a = 70; //image width
var b = 8; //round ness
var scaleFactor = iw / (6 * 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
if (!isNaN(y)) {
ctx.drawImage(
img,
X * scaleFactor,
0,
iw / 0.78,
ih,
X + xOffset,
y + yOffset,
1,
162
);
}
}
};
}
}
希望有人可以帮助解决这个问题!
【问题讨论】:
标签: javascript html canvas html5-canvas