gpt4 book ai didi

jquery - 使用 jQuery 变形图像

转载 作者:行者123 更新时间:2023-11-28 15:34:54 25 4
gpt4 key购买 nike

是否有任何 jQuery 或 Canvas 代码可用于从一张图像到另一张图像的变形动画。我正需要这个。我搜索了很多,但结果为空。

最佳答案

如果您想要纯 Canvas 解决方案,您可以使用不透明度(alpha)来实现您的效果:

  • 从 2 张图像开始,
  • 开始时图像#1 完全不透明,图像#2 完全透明,
  • 在动画循环中,慢慢降低 image#1 的不透明度并增加 image#2 的不透明度,
  • 您可以使用以下命令设置在 Canvas 中绘制的图像的不透明度(alpha):context.globalAlpha

这里是示例代码和演示:

$("#fade").hide();

var imageURLs=[]; // put the paths to your images here
var imagesOK=0;
var imgs=[];
imageURLs.push("https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house204-1.jpg");
imageURLs.push("https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house204-2.jpg");
imageURLs.push("https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house204-3.jpg");
imageURLs.push("https://dl.dropboxusercontent.com/u/139992952/stackoverflow/house204-4.jpg");
loadAllImages();
//
function loadAllImages(){
for (var i=0; i<imageURLs.length; i++) {
var img = new Image();
imgs.push(img);
img.onload = function(){
imagesOK++;
if (imagesOK>=imageURLs.length ) {
$("#fade").show();
ctx.drawImage(imgs[0],0,0);
}
};
img.onerror=function(){alert("image load failed");}
img.crossOrigin="anonymous";
img.src = imageURLs[i];
}
}


var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");

var fadeOutIndex=imgs.length-1;
var fadeInIndex=0;
var fadePct=0;

function animateFade(){
if(fadePct>100){return;}
requestAnimationFrame(animateFade);
draw(imgs[fadeInIndex],fadePct/100);
draw(imgs[fadeOutIndex],(1-fadePct/100));
fadePct++;
}

function draw(img,opacity){
ctx.save();
ctx.globalAlpha=opacity;
ctx.drawImage(img,0,0);
ctx.restore();
}

$("#fade").click(function(){
fadePct=0;
if(++fadeOutIndex == imgs.length){fadeOutIndex=0;}
if(++fadeInIndex == imgs.length){fadeInIndex=0;}
animateFade();
});
body{ background-color: ivory; }
canvas{border:1px solid red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button id="fade">Fade to next Image</button><br>
<canvas id="canvas" width=204 height=204></canvas><br>

关于jquery - 使用 jQuery 变形图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25951694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com