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)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • javascript 的Document属性和方法集合

    来讲解一下“javascript 的Document属性和方法集合”的完整攻略。 1. Document属性 1.1 title属性 title属性用于获取或修改HTML文档的标题。例如: // 查看当前文档标题 console.log(document.title); // 修改当前文档标题 document.title = "新标题"…

    JavaScript 2023年6月10日
    00
  • js实现字符串的16进制编码不加密

    下面是详细讲解“js实现字符串的16进制编码不加密”的完整攻略。 1. 背景介绍 在前端开发中,有时候需要将字符串进行编码,以便在传输、存储、展示的过程中保证数据的正确性和减少潜在相关问题可能性。而我们日常中接触最多的编码格式有两种:URL编码和Base64编码,其中URL编码是将每个字符转化为%xy的形式,而Base64编码则是将每3个字符编码为4个字符。…

    JavaScript 2023年5月20日
    00
  • JavaScript之Object类型介绍

    下面是关于JavaScript之Object类型介绍的详细讲解。 1. 什么是Object类型 Object类型是JavaScript中最基础的一个类型,也是所有其他类型的基础。对象是由一组无序的键值对组成的集合。每个键值对称作对象的一个属性,键名是一个字符串(比如”age”),键值可以是任意数据类型,包括其他对象。 对象可以通过两种方式来创建:使用Obje…

    JavaScript 2023年5月27日
    00
  • Javascript类型判断相关例题及解析

    Javascript类型判断相关例题及解析 前言 在Javascript编程中,进行类型判断十分常见。需要熟悉Javascript中数据类型、类型判断方法以及常见类型判断例题的解析。在本篇文章中,我们将结合实例,深入分析Javascript中类型判断的相关知识点。 数据类型 Javascript中的数据类型分为基本数据类型和引用数据类型。 基本数据类型 Ja…

    JavaScript 2023年6月10日
    00
  • JavaScript实现数字数组正序排列的方法

    下面是实现数字数组正序排列的方法的攻略。 步骤一:使用JavaScript原生方法实现排序 JavaScript提供了sort()方法来对数组进行排序。sort()方法默认按照字典顺序排序,可以使用回调函数来实现数字的正序排列。回调函数接收两个参数,分别代表即将比较的元素a和b,通过返回值可以决定排列顺序。 let arr = [3,6,1,2,8,4]; …

    JavaScript 2023年5月27日
    00
  • javascript自执行函数

    JavaScript自执行函数(Self-Invoking Function),又叫立即执行函数(Immediately-Invoked Function Expression,IIFE),是一种可以立即自动执行的函数。它的语法结构非常简单: (function(){ // code })(); 上述代码定义了一个匿名函数,并立即执行。整个函数块被包含在一对…

    JavaScript 2023年5月27日
    00
  • jquery validate添加自定义验证规则(验证邮箱 邮政编码)

    以下是关于jquery validate添加自定义验证规则的完整攻略。 什么是jquery validate? jQuery validate是一个基于jQuery的表单验证插件,它可以对表单中的各类数据进行校验,从而帮助我们减少了客户端数据校验的代码量,提高了开发效率。 如何添加自定义验证规则? jquery validate插件提供了丰富的内置验证规则,…

    JavaScript 2023年6月10日
    00
  • 浅析JavaScript作用域链、执行上下文与闭包

    让我来为你详细讲解一下“浅析JavaScript作用域链、执行上下文与闭包”的完整攻略。 一、作用域链 作用域是指程序中的变量能够被访问的范围。JavaScript采用的是词法作用域,也就是在定义变量时就确定了变量的作用域。作用域链就是由当前执行环境与其上层环境的变量对象组成的链表。在查找变量时,会沿着这个链表一级一级地向上查找,直到找到为止。如果最终还没有…

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