js前端技巧之图片格式转换(File、Blob、base64)

JS前端技巧之图片格式转换攻略

什么是图片格式转换?

图片格式转换是将一种图片格式转换成另一种图片格式的过程。在前端开发中,常见的图片格式有JPEG、PNG、GIF等。图片格式转换可以实现以下需求:

  • 上传图片格式限制:例如要求用户上传的头像只能是JPEG格式。
  • 图片压缩:将大尺寸的图片转换为小尺寸的图片,降低图片占用的存储空间和带宽资源。
  • 图片处理:例如将图片转为灰度图或在图片上添加水印等。

File、Blob和base64是什么?

在图片格式转换中,我们常用三种数据类型:File、Blob和base64。

File

File对象是HTML5中新增的API,它表示一个文件,通常用于用户上传文件时使用。File对象包含了文件的元数据信息(文件名、文件大小、最后修改时间等)以及文件的实际内容。我们可以通过FileReader来读取File对象中的内容。

Blob

Blob是二进制大对象的缩写,表示一个二进制数据对象。Blob对象可以是文件内容的部分或者全部。Blob对象的数据通常来自于以下内容:

  • 通过原始的二进制数据。
  • 通过File对象的slice方法从大文件中裁剪出小的Blob对象。
  • 从一个数组或者字符串中创建Blob对象。

base64

base64是一种编码方式,它将二进制数据转换为文本数据,可用于在HTTP协议等中传递二进制数据。在图片格式转换中,我们常用base64来表示一个图片文件,其格式为"data:image/png;base64,iVBORw0KG......"。

实现图片格式转换的方法

下面分别介绍如何使用File、Blob和base64来实现图片格式转换。

使用File对象

  • 将图片文件从File类型转为Blob类型
//定义一个input元素
<input type="file" id="inputFile">

//获取input元素的文件
let file = document.getElementById('inputFile').files[0];

//将File类型转为Blob类型
let blob = file.slice(0,file.size,file.type);
  • 将图片文件从File类型转为Base64类型
//定义一个input元素
<input type="file" id="inputFile">

//获取input元素的文件
let file = document.getElementById('inputFile').files[0];

//使用FileReader进行读取
let fr = new FileReader();
fr.readAsDataURL(file);
//读取完成调用函数
fr.onload = function() {
  //获取读取完成的源数据(base64字符串)
  let base64Str = this.result;
  console.log(base64Str);
}

使用Blob对象

  • 将图片从Blob类型转为File类型
//获取一张图片
let img = document.getElementsByTagName('img')[0];

//将图片转为Blob类型
let blob = new Blob([img.src],{type: 'image/png'});

//创建一个File对象
let file = new File([blob],'demo.png',{type: 'image/png'});

使用base64

  • 将图片从base64类型转为Blob类型
//定义base64字符串
let base64Str = 'data:image/png;base64,iVBORw0KG......';

//使用atob将base64字符串转为Byte数组
let byteArr = atob(base64Str.split(',')[1]).split('').map((item) => { return item.charCodeAt(0)});

//将Byte数组转为Uint8Array数组
let uint8 = new Uint8Array(byteArr);

//创建Blob对象
let blob = new Blob([uint8],{type:'image/png'});

总结

本文介绍了前端图片格式转换的三种方式:File、Blob、base64。对于不同的需求,可以根据实际情况选择不同的方式来实现。同时,通过本文的示例代码,也可以更好地理解和掌握这些API的使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js前端技巧之图片格式转换(File、Blob、base64) - Python技术站

(0)
上一篇 4天前
下一篇 4天前

相关文章

  • JavaScript调用客户端的可执行文件(示例代码)

    在JavaScript中可以使用一些特殊的API来操作客户端的可执行文件,这些API被称作Web API。其中有一个重要的API就是利用浏览器的插件对象来运行客户端的可执行文件。下面给出基于Chrome浏览器和IE浏览器的实现方式。 Chrome浏览器操作客户端的可执行文件 1. 首先需要编写一个简单的插件 插件的主要功能就是用于连接客户端与浏览器,使得浏览…

    JavaScript 4天前
    00
  • JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析

    JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析 什么是函数式编程 函数式编程是一种编程范式,它的主要思想是把函数作为一等公民来看待,将它们作为值来操作和传递。在函数式编程中,函数具有不可变性,也就是说,它们不能修改传递给它们的参数,也不能修改全局变量或状态。 函数…

    JavaScript 4天前
    00
  • JS使用正则表达式实现常用的表单验证功能分析

    这里我提供一份完整的攻略来实现用正则表达式实现常用的表单验证功能。步骤如下: 步骤一:准备HTML代码 首先,我们需要编写一个表单来进行验证。HTML代码如下: <form method="post" action="" id="myForm"> <label for="…

    JavaScript 5天前
    00
  • Javascript数组Array方法解读

    接下来我将为您详细讲解 “Javascript数组Array方法解读” 的完整攻略。 1. 概述 在 Javascript 中,数组(Array)是一个非常常用的数据结构,可以用来存储一系列的值。同时,数组提供了丰富的方法,可以对数组进行各种操作,例如添加、删除、筛选、排序等。 在本文中,我将为您详细解读 Javascript 数组的常用方法,帮助您更好地掌…

    JavaScript 4天前
    00
  • 基于javascript的异步编程实例详解

    基于 JavaScript 的异步编程实例详解 在 JavaScript 中,由于事件循环机制,异步编程已经成为了常态。在本文中,我们将深入讲解基于 JavaScript 的异步编程实例的完整攻略。我们会通过两条示例来说明异步编程的原理和实现。 示例1:使用Callback函数实现异步编程 在 JavaScript 中,回调函数是实现异步编程的常用方式。在示…

    JavaScript 3天前
    00
  • javascript中的delete使用详解

    当我们在JavaScript中使用delete关键字时,它有两种用途: 删除对象的属性 删除对象本身 下面,我们将逐一介绍这两种情况。 删除属性 在JavaScript中,我们可以删除一个对象的属性。我们可以使用delete关键字来删除属性。如下: let obj = { foo: true, bar: false }; delete obj.bar; co…

    JavaScript 3天前
    00
  • javascript学习笔记之10个原生技巧

    Javascript学习笔记之10个原生技巧 简介 这篇学习笔记将会介绍10个用Javascript技巧的原生方法。这些方法将会帮助你提高你的Javascript编程能力,让你写出简单、优雅、高效的代码。 1. 使用 Array.map() 进行数组的元素转换 Array.map() 方法可以将一个数组的所有元素都通过一个提供的函数进行转换。它不会改变原来的…

    JavaScript 2023年5月18日
    00
  • JavaScript中用getDate()方法返回指定日期的教程

    标题:JavaScript中用getDate()方法返回指定日期的教程 介绍 JavaScript中的Date对象为我们提供了多种方法来操作日期和时间。其中,getDate()方法用于返回Date对象中存储的日期的月份中的某一天。 语法 getDate()方法的语法如下: dateObject.getDate() 其中,dateObject为必填项,表示要获…

    JavaScript 4天前
    00
  • JavaScript中判断对象类型的几种方法总结

    JavaScript 中判断对象类型的几种方法总结 为什么需要判断对象类型? 在 JavaScript 编程中,判断对象类型是很常见的操作。在使用对象时,我们需要知道该对象的类型,来确定可用的方法和属性,以及如何正确使用它。例如,在处理对象的过程中,我们可能会需要区分对象是一个数字,字符串,布尔值,还是数组、对象等其他类型。因此,判断对象类型是非常重要的。 …

    JavaScript 5天前
    00
  • Javascript中将变量转换为字符串的三种方法

    将变量转换为字符串是在Javascript中一个非常常见的操作,下面我将详细讲解Javascript中将变量转换为字符串的三种方法: 1. toString()方法 toString()方法是将变量转换为字符串的最简单的方法,它是所有对象都有的一个方法。当使用toString()方法将变量转换为字符串时,如果该变量的值为null或undefined,在使用t…

    JavaScript 4天前
    00