JavaScript前端实现压缩图片功能

实现压缩图片功能需要使用 HTML5 中的 File API,以及 Canvas 编程接口。具体步骤如下:

  1. HTML 部分:
    首先需要在 HTML 中定义好上传文件的 input 控件和显示压缩后图片的 img 控件。代码如下:
<input type="file" id="fileInput">
<img id="compressImg">
  1. JavaScript 部分:
    在获取到上传的文件之后,需要使用 File API 将图片加载到页面上,并使用 Canvas 对图片进行操作。具体代码如下:
const MAX_WIDTH = 800;  // 压缩后图片的最大宽度

const fileInput = document.getElementById('fileInput');
const compressImg = document.getElementById('compressImg');

fileInput.addEventListener('change', () => {
  const file = fileInput.files[0];
  const reader = new FileReader();  // 创建文件读取对象
  reader.readAsDataURL(file);  // 读取文件
  reader.onload = () => {
    const img = new Image();  // 创建图片对象
    img.src = reader.result;  // 设置图片源
    img.onload = () => {
      const canvas = document.createElement('canvas');  // 创建画布
      const ctx = canvas.getContext('2d');
      let w = img.width;  // 图片宽度
      let h = img.height;  // 图片高度
      if (w > MAX_WIDTH) {  // 如果宽度超过最大值则进行压缩
        h = h * MAX_WIDTH / w;
        w = MAX_WIDTH;
      }
      canvas.width = w;  // 设置画布宽度
      canvas.height = h;  // 设置画布高度
      ctx.drawImage(img, 0, 0, w, h);  // 将图片绘制到画布上
      compressImg.src = canvas.toDataURL();  // 设置压缩后图片的源
    };
  };
});
  1. 示例说明:
    下面我们通过两个示例来说明如何使用上述代码实现压缩图片功能。

示例 1:
我们已有一个 HTML 文件和一个名为 compress.js 的 JavaScript 文件。首先,将上述 JavaScript 代码复制到 compress.js 文件中。然后在 HTML 文件中引入 compress.js 文件,再在页面中添加上述 HTML 代码。最后打开页面,选择一张图片进行上传,等待压缩后图片显示即可。

示例 2:
我们使用 Vue 框架来实现图片上传和压缩的功能。首先,新建一个名为 ImageUploader.vue 的组件,将上述 HTML 和 JavaScript 代码嵌入其中。然后在父组件中引入 ImageUploader.vue 组件即可使用图片上传和压缩功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript前端实现压缩图片功能 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript进阶知识点作用域详解

    JavaScript进阶知识点作用域详解 在学习JavaScript的过程中,作用域是一个非常重要的概念,也是进阶知识学习的必备内容。本篇文章将对JavaScript中的作用域进行详解,帮助读者更好地理解和应用这个概念。 什么是作用域 在JavaScript中,作用域是指变量和函数的可访问范围。JavaScript中有两种作用域:全局作用域和局部作用域。全局…

    JavaScript 2023年6月10日
    00
  • asp.net新闻列表生成静态页之批量和单页生成

    下面我将详细讲解“ASP.NET新闻列表生成静态页之批量和单页生成”的完整攻略,包括过程、相关技术和示例说明: 背景介绍 在开发一个ASP.NET新闻网站时,为了让网站更加稳定和高效,需要将新闻列表页面和新闻详情页面都生成为静态页面。这样不仅可以大大提高访问速度,还能降低服务器负担。而对于新闻列表的生成,我们可以采用批量生成和单页生成两种方式,这篇文章将为你…

    JavaScript 2023年6月11日
    00
  • ASP.NET MVC5网站开发之用户添加和浏览2(七)

    《ASP.NET MVC5网站开发之用户添加和浏览2(七)》是一篇系列文章中的一篇,主要介绍了如何在ASP.NET MVC5网站中实现用户添加和浏览功能。该文章主要分为以下几部分: 实现用户添加功能。 实现用户浏览功能。 使用Bootstrap样式美化界面。 具体攻略如下: 实现用户添加功能 步骤如下: 在MVC项目的Controller文件夹下创建User…

    JavaScript 2023年6月11日
    00
  • 谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)

    JSON是一种轻量级的数据交换格式,提供了在不同编程语言之间交换数据的标准格式。在JavaScript中,JSON对象提供了一种方便的方式将JavaScript对象转换成JSON格式的字符串或者将JSON格式的字符串转换成JavaScript对象。而JSON.stringify()和JSON.parse()就是这两种转换方式。 JSON.stringify(…

    JavaScript 2023年5月27日
    00
  • 在javascript将NodeList作为Array数组处理的方法

    将NodeList作为Array数组处理的方法是在javascript中非常有用的技巧之一。在许多情况下,获得的是NodeList类型的HTML元素集合,我们可能需要对集合进行操作,比如对集合进行排序,筛选等。然而,NodeList不是真正的数组类型,它缺少数组类型的操作和方法。幸运的是,我们可以使用一些技巧将NodeList转换为以进行操作的数组。 在ja…

    JavaScript 2023年5月27日
    00
  • 非常酷炫的Bootstrap图片轮播动画

    下面是“非常酷炫的Bootstrap图片轮播动画”的完整攻略: 1.准备工作 在使用Bootstrap图片轮播动画之前,需要对代码进行一定的准备工作: 引入jQuery和Bootstrap的CSS和JS文件 <!– 引入jQuery –> <script src="https://code.jquery.com/jquery-…

    JavaScript 2023年6月11日
    00
  • jQuery 创建Dom元素

    jQuery 是一款流行的 JavaScript 库,可以方便地操作 DOM 元素。在 jQuery 中,创建 DOM 元素有以下几种方式: 1. 使用 HTML 代码创建 可以使用 jQuery 的 $() 方法创建 DOM 元素,该方法可以接收包含 HTML 代码的字符串作为参数。例如: var div = $("<div>Hell…

    JavaScript 2023年6月10日
    00
  • JavaScript中常见的字符串操作函数及用法汇总

    JavaScript中常见的字符串操作函数及用法汇总 JavaScript中有很多字符串操作函数,这篇攻略将会讲解其中常见的一些函数及其用法。我们来详细了解一下吧。 字符串的创建 字符串可以通过两种方式创建,分别是双引号和单引号。 var str1 = "JavaScript"; // 使用双引号创建字符串 var str2 = ‘Jav…

    JavaScript 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部