通过JavaScript实现图片压缩
目录
压缩图片的原理👨🚀👨🚀
其实我们实现压缩的本质原理是通过使用canvas中的来进行图片的压缩操作,但是中间需要经过一系列的加工处理,下面我将详细的讲解细节的操作:
const init=()=>{
const selectPicture = document.querySelector("#selectImg");
const originalPreview = document.querySelector("#imgPreview");
const compressPreview = document.querySelector("#compressImg");
// 绑定点击事件
function BindEvent() {
selectPicture.addEventListener("change", (e) => {
const imgFiles = e.target.files[0];
console.log(e.target.files[0]);
fn(imgFiles);
});
}
BindEvent();
.....剩余内容在下面
}
init()
FileReader对象 🍊🍊
首先我们先了解一下FileReader这个对象
简单的来讲就是FileReader这个对象允许应用程序异步的读取计算机的文件内容,其中这个对象提供了一些方法,我们等会会用到它提供的一些方法。
// 读取图片原始的base64
const fn = (imgFiles) => {
const render = new FileReader();
render.readAsDataURL(imgFiles);
render.onload = () => {
// console.log(render.result);
// 将图片压缩处理
originalPreview.setAttribute("src", render.result);
imageCompression(render.result, 40, "image/jpg");
};
// 将图片转化为base64形式
};
在这个函数中我们通过调用这个方法,这个方法可以用来读取指定的文件,在读取完成之后在render上面的 result属性将包含一个URL格式的字符串 (base64编码) 以表示所读取文件的内容。
我们在使用 方法的一般流程如下:
我们在这个函数中将原始图片通过setAttribute方法给src属性设置值render.result(base64)
在这里我们接下来就需要调用压缩图片的函数
首先这个函数接收三个值分别是:
图片压缩函数⛹️♀️⛹️♀️
// 压缩函数
const imageCompression = (imageURL, quality, imageType) => {
let canvas = document.createElement("canvas");
let img = document.createElement("img");
img.src = imageURL;
img.onload = () => {
// 在实际的工作中,根据业务来计算相应的宽度,这里只是进行一个演示的小demo
canvas.width = 300;
canvas.height = 300;
// 获取上下文
let ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, 300, 300);
// 将图片压缩
let compressImage = canvas.toDataURL(imageType, quality / 100);
console.log(compressImage);
compressPreview.setAttribute("src", compressImage);
};
};
压缩前后的图片进行对比:🚴♀🚴♀
大小的改变:
片大小上缩小了3倍。这节省了空间,在一些显示图片很多的网站就可以使用这种压缩,在页面展示的时候可以显示这种压缩之后的图片,当点击进去之后可以显示原本没有压缩的图片,这样就节省了很多的性能。
但是压缩之后的图片确实没有之前美观,所以这是有舍有得,我们可以在具体的情景中灵活的使用。
总结🔑🔑
这次通过对图片压缩的学习,是自己有了解学习了之前所不知道的知识,比如图片的存储形式以及FileReader之类的,使自己收获很多。
以上就是通过JavaScript实现图片压缩的详细内容,更多关于JavaScript压缩图片的资料请关注脚本之家其它相关文章!
您可能感兴趣的文章: