当前位置:首页 > 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类切换实现淡入淡出效果

js实现图片变换

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实现高级图像变换

js实现图片变换

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();

注意事项

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

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

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

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

h5实现全景图片

h5实现全景图片

H5 实现全景图片的方法 使用 Three.js 库 Three.js 是一个强大的 3D 库,可以用于创建全景图片效果。以下是一个简单的实现步骤: 引入 Three.js 库 <scri…

jquery 图片

jquery 图片

jQuery 图片操作 jQuery 提供了多种方法来操作图片,包括加载、显示、隐藏、调整尺寸等。以下是一些常见的图片操作方法: 动态加载图片 使用 attr() 方法可以动态修改图片的 src 属…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

vue实现图片循环

vue实现图片循环

实现图片循环展示 在Vue中实现图片循环展示可以通过v-for指令结合数组数据完成。以下是具体实现方式: 基础循环展示 准备图片数据数组,使用v-for渲染图片列表: <template&g…

vue实现图片单选

vue实现图片单选

Vue 实现图片单选功能 在 Vue 中实现图片单选功能可以通过多种方式完成,以下是两种常见的实现方法: 方法一:使用 v-model 和单选按钮 通过将单选按钮与图片绑定,利用 v-model 管…