当前位置:首页 > JavaScript

js实现thumbnail

2026-03-14 03:56:52JavaScript

使用Canvas生成缩略图

通过Canvas的drawImage方法可以缩放图片并生成缩略图。

js实现thumbnail

function generateThumbnail(file, width, height) {
  return new Promise((resolve) => {
    const reader = new FileReader();
    reader.onload = (e) => {
      const img = new Image();
      img.onload = () => {
        const canvas = document.createElement('canvas');
        canvas.width = width;
        canvas.height = height;
        const ctx = canvas.getContext('2d');
        ctx.drawImage(img, 0, 0, width, height);
        resolve(canvas.toDataURL('image/jpeg'));
      };
      img.src = e.target.result;
    };
    reader.readAsDataURL(file);
  });
}

使用第三方库(如sharp-js)

Node.js环境下可使用sharp库高效处理图片缩略图。

js实现thumbnail

const sharp = require('sharp');
async function createThumbnail(inputPath, outputPath, width, height) {
  await sharp(inputPath)
    .resize(width, height)
    .toFile(outputPath);
}

纯CSS实现缩略图效果

通过CSS的object-fit和固定宽高实现视觉缩略图,不改变原始文件。

<style>
  .thumbnail {
    width: 150px;
    height: 150px;
    object-fit: cover;
  }
</style>
<img src="original.jpg" class="thumbnail">

使用URL.createObjectURL预览

适用于上传前快速生成客户端缩略图预览。

function previewThumbnail(file) {
  const url = URL.createObjectURL(file);
  const img = document.createElement('img');
  img.src = url;
  img.style.width = '100px';
  document.body.appendChild(img);
}

注意事项

  • Canvas方法会损失部分画质,可通过quality参数调整JPEG输出质量。
  • 大文件处理时建议使用Web Worker避免阻塞主线程。
  • 移动端需注意内存限制,建议分块处理或降低分辨率。

标签: jsthumbnail
分享给朋友:

相关文章

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现游标

js实现游标

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

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…