【发布时间】:2017-03-03 17:14:36
【问题描述】:
我想将图像包裹在圆柱形杯子上。我正在使用 html5 和 Java 脚本来实现这个解决方案。我从这个链接中得到了一些想法:https://stackoverflow.com/questions/31424117/。 但我没有从这个链接得到解决方案。
我想将剩余的图像包裹在杯子后面,就像模制剩余的部分并添加一些旋转按钮。
<canvas id="canvas"></canvas>
<script>
var canvas = document.getElementById("canvas");
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, 0, 0, productImg.width, productImg.height, 0, 0, iw, ih);
//start();
// outline
/*ctx.beginPath();
ctx.moveTo(88, 235.734375);
ctx.bezierCurveTo(88, 234.734375, 204, 298, 327, 234.734375);
ctx.stroke();*/
};
productImg.src = "https://d2z4fd79oscvvx.cloudfront.net/0018872_inspirational_teacher_mug.jpeg";
var img = new Image();
img.onload = start;
img.src = "http://blog.foreigners.cz/wp-content/uploads/2015/05/Make-new-friends.jpg";
var pointer = 0;
function start() {
var iw = img.width;
var ih = img.height;
//canvas.width = iw + 20;
//canvas.height = ih + 20;
var x1 = 125;
var y1 = 130;
var x2 = 180;
var y2 = 190;
var x3 = 405;
var y3 = 150;
// calc line equations slope & b (m,b)
var unitT = 1 / iw;
// draw vertical slices
for (var X = 0, t = 0; X < iw; X++, t += unitT) {
var xTop = (1 - t) * (1 - t) * x1 + 2 * (1 - t) * t * x2 + t * t * x3;
var yTop = (1 - t) * (1 - t) * y1 + 2 * (1 - t) * t * y2 + t * t * y3;
ctx.drawImage(img, X + pointer, 0, 1, ih, xTop, yTop, 0.85, ih - 600);
}
如果我在上面的代码中改变指针值,剩下的图像 拉伸。
var pointer = 100 ;
我想将图像包裹在整个杯子上并左右旋转。
【问题讨论】:
-
对此做了一个小插曲:plnkr.co/edit/5LAv3f8KLZ8X8zOH4yUc
-
-1。花了更多时间查看这个问题后,我意识到上面链接的问题有一个 functioning jsfiddle,OP 复制得很糟糕,这是这对他们不起作用的主要原因。不过,@Varun,你需要做一些几何:你一次只能看到一半的图像,你需要一个像余弦这样的三角函数来做投影,但你应该从修改你找到的工作示例开始一步一步来。
标签: javascript jquery css html