当前位置:首页 > JavaScript

js实现图片

2026-02-28 20:50:52JavaScript

图片加载与显示

在JavaScript中,可以通过Image对象或<img>标签动态加载图片。以下是两种常见方法:

// 方法1:使用Image对象
const img = new Image();
img.src = 'path/to/image.jpg';
document.body.appendChild(img);
// 方法2:动态创建img标签
const imgElement = document.createElement('img');
imgElement.src = 'path/to/image.jpg';
document.body.appendChild(imgElement);

图片懒加载

实现图片懒加载可优化页面性能,通过IntersectionObserver API检测图片是否进入视口:

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

HTML中需将实际URL放在data-src属性:

<img data-src="path/to/image.jpg" alt="Lazy loaded image">

图片压缩与预览

使用Canvas实现客户端图片压缩与预览:

function compressImage(file, maxWidth, maxHeight, quality) {
  return new Promise((resolve) => {
    const reader = new FileReader();
    reader.onload = (e) => {
      const img = new Image();
      img.onload = () => {
        const canvas = document.createElement('canvas');
        let width = img.width;
        let height = img.height;

        if (width > maxWidth) {
          height *= maxWidth / width;
          width = maxWidth;
        }
        if (height > maxHeight) {
          width *= maxHeight / height;
          height = maxHeight;
        }

        canvas.width = width;
        canvas.height = height;
        const ctx = canvas.getContext('2d');
        ctx.drawImage(img, 0, 0, width, height);
        resolve(canvas.toDataURL('image/jpeg', quality));
      };
      img.src = e.target.result;
    };
    reader.readAsDataURL(file);
  });
}

图片滤镜效果

通过Canvas实现基础滤镜效果(如灰度化):

function applyGrayscale(imageElement) {
  const canvas = document.createElement('canvas');
  canvas.width = imageElement.width;
  canvas.height = imageElement.height;
  const ctx = canvas.getContext('2d');
  ctx.drawImage(imageElement, 0, 0);

  const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
  const data = imageData.data;

  for (let i = 0; i < data.length; i += 4) {
    const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
    data[i] = avg;     // R
    data[i + 1] = avg; // G
    data[i + 2] = avg; // B
  }

  ctx.putImageData(imageData, 0, 0);
  return canvas.toDataURL();
}

图片上传处理

使用FormData实现图片上传:

async function uploadImage(file) {
  const formData = new FormData();
  formData.append('image', file);

  try {
    const response = await fetch('/upload', {
      method: 'POST',
      body: formData
    });
    return await response.json();
  } catch (error) {
    console.error('Upload failed:', error);
  }
}

响应式图片处理

通过window.matchMedia实现响应式图片切换:

function checkScreenSize() {
  const mediaQuery = window.matchMedia('(max-width: 768px)');
  const img = document.getElementById('responsive-img');

  if (mediaQuery.matches) {
    img.src = 'path/to/mobile-image.jpg';
  } else {
    img.src = 'path/to/desktop-image.jpg';
  }
}

window.addEventListener('resize', checkScreenSize);
checkScreenSize(); // 初始检查

js实现图片

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

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js轮播图实现原理

js轮播图实现原理

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

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm…

jquery 图片

jquery 图片

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

jquery图片

jquery图片

jQuery 图片操作 jQuery 提供了多种方法来处理图片,包括加载、显示、隐藏、动画效果等。以下是一些常见的 jQuery 图片操作方法: 动态加载图片 使用 jQuery 的 attr()…