当前位置:首页 > JavaScript

js实现图片变换

2026-02-03 05:01:08JavaScript

使用JavaScript实现图片变换

方法一:通过修改src属性切换图片

const image = document.getElementById('myImage');
const imageSources = ['image1.jpg', 'image2.jpg', 'image3.jpg'];
let currentIndex = 0;

function changeImage() {
  currentIndex = (currentIndex + 1) % imageSources.length;
  image.src = imageSources[currentIndex];
}

// 定时切换
setInterval(changeImage, 2000);

方法二:使用CSS类切换实现淡入淡出效果

const image = document.getElementById('myImage');
const imageSources = ['image1.jpg', 'image2.jpg', 'image3.jpg'];
let currentIndex = 0;

function fadeImage() {
  image.classList.add('fade-out');

  setTimeout(() => {
    currentIndex = (currentIndex + 1) % imageSources.length;
    image.src = imageSources[currentIndex];
    image.classList.remove('fade-out');
  }, 500);
}

// 添加CSS样式
const style = document.createElement('style');
style.textContent = `
  .fade-out {
    opacity: 0;
    transition: opacity 0.5s ease;
  }
`;
document.head.appendChild(style);

setInterval(fadeImage, 3000);

方法三:使用Canvas实现高级图像变换

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const images = [
  new Image(), new Image(), new Image()
];
images.forEach((img, i) => img.src = `image${i+1}.jpg`);

let currentImg = 0;
let alpha = 0;

function draw() {
  ctx.globalAlpha = 1;
  ctx.drawImage(images[currentImg], 0, 0, canvas.width, canvas.height);

  if(alpha < 1) {
    ctx.globalAlpha = alpha;
    ctx.drawImage(images[(currentImg + 1) % images.length], 0, 0, canvas.width, canvas.height);
    alpha += 0.01;
  } else {
    alpha = 0;
    currentImg = (currentImg + 1) % images.length;
  }

  requestAnimationFrame(draw);
}

images[0].onload = function() {
  canvas.width = images[0].width;
  canvas.height = images[0].height;
  draw();
};

方法四:使用WebGL实现3D图片变换

const canvas = document.getElementById('glCanvas');
const gl = canvas.getContext('webgl');

// 初始化WebGL程序、着色器等
// 加载纹理
const textures = [];
const imageUrls = ['image1.jpg', 'image2.jpg', 'image3.jpg'];

imageUrls.forEach((url, i) => {
  textures[i] = gl.createTexture();
  const image = new Image();
  image.onload = function() {
    gl.bindTexture(gl.TEXTURE_2D, textures[i]);
    gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
    gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
  };
  image.src = url;
});

let currentTexture = 0;
let mixFactor = 0;

function render() {
  // 设置混合因子uniform
  // 绑定两个纹理
  // 绘制场景

  mixFactor += 0.01;
  if(mixFactor >= 1) {
    mixFactor = 0;
    currentTexture = (currentTexture + 1) % textures.length;
  }

  requestAnimationFrame(render);
}

render();

注意事项

js实现图片变换

  • 确保图片已完全加载后再进行变换操作
  • 对于响应式设计,需要考虑图片尺寸适应问题
  • 大量图片变换时注意内存管理
  • 移动端需考虑性能优化

以上方法可根据项目需求选择适合的实现方式,从简单的图片切换到复杂的3D变换都能满足不同场景需求。

标签: 图片js
分享给朋友:

相关文章

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现图片滚动效果

js实现图片滚动效果

使用CSS动画实现图片滚动 通过CSS的@keyframes和animation属性实现无缝滚动效果。将图片容器设置为横向排列,通过动画平移位置。 <style> .scroll-c…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…