当前位置:首页 > JavaScript

js 实现图片功能

2026-03-01 04:30:00JavaScript

图片加载与显示

使用<img>标签动态加载图片,通过JavaScript设置src属性:

const img = document.createElement('img');
img.src = 'path/to/image.jpg';
document.body.appendChild(img);

监听图片加载完成事件:

img.onload = function() {
  console.log('图片加载完成');
};

图片懒加载

通过IntersectionObserver实现懒加载:

const lazyImages = document.querySelectorAll('img[data-src]');
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      observer.unobserve(img);
    }
  });
});
lazyImages.forEach(img => observer.observe(img));

图片预览与放大

使用CSS transform实现点击放大效果:

document.querySelectorAll('.preview-img').forEach(img => {
  img.addEventListener('click', () => {
    img.style.transform = img.style.transform === 'scale(2)' ? 'scale(1)' : 'scale(2)';
  });
});

图片裁剪与编辑

使用Canvas API进行图片裁剪:

const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const img = new Image();
img.onload = function() {
  canvas.width = 200;
  canvas.height = 200;
  ctx.drawImage(img, 0, 0, 200, 200);
  document.body.appendChild(canvas);
};
img.src = 'original.jpg';

图片上传

通过<input type="file">实现图片上传:

const input = document.createElement('input');
input.type = 'file';
input.accept = 'image/*';
input.onchange = function(e) {
  const file = e.target.files[0];
  const reader = new FileReader();
  reader.onload = function(event) {
    const img = new Image();
    img.src = event.target.result;
    document.body.appendChild(img);
  };
  reader.readAsDataURL(file);
};
document.body.appendChild(input);

图片滤镜效果

使用Canvas实现滤镜效果:

function applyFilter(imageData) {
  const data = imageData.data;
  for (let i = 0; i < data.length; i += 4) {
    data[i] = 255 - data[i]; // 红色通道反相
    data[i+1] = 255 - data[i+1]; // 绿色通道反相
    data[i+2] = 255 - data[i+2]; // 蓝色通道反相
  }
  return imageData;
}

图片压缩

使用Canvas实现图片压缩:

js 实现图片功能

function compressImage(img, quality = 0.8) {
  const canvas = document.createElement('canvas');
  canvas.width = img.width;
  canvas.height = img.height;
  const ctx = canvas.getContext('2d');
  ctx.drawImage(img, 0, 0);
  return canvas.toDataURL('image/jpeg', quality);
}

标签: 功能图片
分享给朋友:

相关文章

vue实现用户添加功能

vue实现用户添加功能

实现用户添加功能的步骤 表单设计与数据绑定 在Vue组件中设计一个表单,包含用户名、邮箱、密码等字段。使用v-model指令实现双向数据绑定,将表单输入与组件的数据属性关联起来。 <templ…

uniapp实现选项卡功能

uniapp实现选项卡功能

实现选项卡功能的基本方法 在uniapp中实现选项卡功能通常需要使用uni-segmented-control组件或自定义样式结合swiper组件。以下是两种常见实现方式: 使用uni-segmen…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…

vue实现答题功能

vue实现答题功能

Vue实现答题功能 数据准备 创建一个包含题目、选项和正确答案的数据结构,通常是一个数组对象。每个题目对象包含问题文本、选项数组和正确答案索引。 const questions = [ {…

vue实现轨道功能

vue实现轨道功能

Vue 实现轨道功能的方法 轨道功能通常指在界面中实现元素沿特定路径移动的效果,例如进度条、时间轴或动画轨迹。以下是几种常见的实现方式: 使用 CSS 动画与 Vue 结合 通过 Vue 动态绑定样…

vue实现注册功能

vue实现注册功能

前端实现注册功能 在Vue中实现注册功能通常需要结合表单验证、HTTP请求和状态管理。以下是一个基于Vue 3和Element Plus的完整实现方案: 模板部分 <template>…