JavaScript前端图片压缩方法封装,支持配置图片压缩大小及压缩质量。复制方法直接可用。

想要提供一流的用户体验,同时又不牺牲图片的质量?传统的图片上传过程中,用户常常因为图片大小限制而感到沮丧,不得不手动调整图片尺寸,这无疑增加了用户的操作负担,尤其是对不太懂如何调整图片尺寸的用户来说,用户体验非常不好。

现在,让我们告别这种繁琐的体验!通过在上传过程中自动检测并优化图片,我们可以确保每一张图片都符合要求,同时保持其原有的精彩细节。

下面介绍的方法,无需依赖任何外部插件,只需将其复制到你的项目中,即可轻松实现图片的智能压缩。这意味着你可以在不牺牲用户体验的前提下,高效地管理图片上传的大小限制。

话不多说,压缩方法封装如下:

/*** 图片压缩* @param {string} url - 图片地址** @param {object} optoion - 配置项*/function compressImg(url, optoion={  maxWidth:1000, //最大宽度 px  maxHeight: 1000,//最大高度 px  quality: 0.8 //压缩质量 0-1 }) {    return new Promise(function (resolve, reject) {      try {        let img = new Image();        img.src = URL.createObjectURL(image);        // 缩放图片需要的canvas        let canvas = document.createElement(\\\'canvas\\\');        let context = canvas.getContext(\\\'2d\\\');
// base64地址图片加载完毕后 img.onload = function () { // 图片原始尺寸 let originWidth = this.width; let originHeight = this.height; // 最大尺寸限制          let maxWidth = optoion.maxWidth,            maxHeight = optoion.maxHeight; // 目标尺寸 let targetWidth = originWidth, targetHeight = originHeight; // 图片尺寸超过500x1000的限制 if (originWidth > maxWidth || originHeight > maxHeight) { if (originWidth / originHeight > maxWidth / maxHeight) { // 更宽,按照宽度限定尺寸 targetWidth = maxWidth; targetHeight = Math.round(maxWidth * (originHeight / originWidth)); } else { targetHeight = maxHeight; targetWidth = Math.round(maxHeight * (originWidth / originHeight)); } } // canvas对图片进行缩放 canvas.width = targetWidth; canvas.height = targetHeight; // 清除画布 context.clearRect(0, 0, targetWidth, targetHeight); // 图片压缩 context.drawImage(img, 0, 0, targetWidth, targetHeight); // canvas转为blob canvas.toBlob(function (blob) { let files = new File([blob], image.name, { type: image.type || \\\'image/png\\\' }); resolve(files);          }, image.type || \\\'image/png\\\', option.quality); } } catch (e) { return reject({ code: 1, msg: \\\'图片压缩出错了!\\\' }); } });}

使用方式如下:

//上传图片最大宽度500px, 最大高度500px,压缩质量0.8const newImg = await obj.compressImg(imgUrl, {  maxWidth: 500,  maxHeight: 500,  quality: 0.8});

让我们一起迈向更加智能、便捷的图片上传,让用户享受无缝、愉悦的上传体验。?? 现在就开始优化你的图片上传流程吧!

原创文章,作者:网络技术联盟站,如若转载,请注明出处:https://www.sudun.com/ask/49857.html

(0)
网络技术联盟站's avatar网络技术联盟站
上一篇 2024年5月11日 上午10:33
下一篇 2024年5月11日 上午10:35

相关推荐

  • ubuntu20 设置静态ip(ubuntu配置静态ip地址命令)

    来源:网络技术联盟站  静态IP地址是在网络设备上手动配置的固定IP地址,与动态分配的DHCP(动态主机配置协议)IP地址相对。配置静态IP地址有助于确保网络设备在每次连…

  • 烟花设计为什么要用编程

    通过编程设计烟花可以实现精确控制和创新设计。这种方法使设计师能够超越传统限制并创造独特的视觉效果。编程提供的精度不仅保证了烟花燃放的安全性,而且还为设计者在创建烟花图案和同步音乐时…

    网站运维 2024年5月12日
    0
  • 数据库SQL 约束NOT NULL

    今天是日更的 47/365 天SQL 约束的定义SQL 约束用于规定表中的数据规则。如果存在违反约束的数据行为,行为会被约束终止。约束可以在创建表时规定(通过

    2024年9月1日
    0
  • 编程客户端学什么

    客户端编程主要涉及两个核心领域:1、语言学习 2、框架掌握。虽然语言学习是这两方面的基础,允许开发人员使用特定的编程语言构建客户端应用程序,但学习框架更实用,特定的框架可以让开发人…

    网站运维 2024年5月12日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注