当前位置: 首页 > news >正文

微信小程序跳2

// 图片压缩

    compressImage (image = {}, options = {}) {

        return new Promise((resolve, reject) => {

            const { width = 0 } = image

            const { compressAfterSizeFlag = false, scaleFlag = false, scaleTargetWidth = 768 } = options

            // 超过100k压缩

            const maxFileSizeLimit = 100 * 1024

            if (image.size > maxFileSizeLimit) {

                const fileSize = image.size / 1024

                // 初始压缩率80

                let quality = 80

                if (fileSize > 200 && fileSize <= 500) {

                    // 200 以上,500k以内的图片,压缩70

                    quality = 60

                } else if (fileSize > 500 && fileSize <= 1024) {

                    // 500 以上,1M以内的图片,压缩50

                    quality = 40

                } else if (fileSize > 1024 && fileSize <= 2048) {

                    // 1M 以上,2M以内的图片,压缩30

                    quality = 30

                } else if (fileSize > 2048 && fileSize <= 5012) {

                    // 2M 以上,5M以内的图片,压缩20

                    quality = 20

                } else if (fileSize > 5012) {

                    // 5M以上的图片,压缩10

                    quality = 10

                }

                // 开始压缩

                const option = {

                    src: image.filePath,

                    quality: quality,

                    success: res => {

                        image.compressPath = res.tempFilePath

                        if (compressAfterSizeFlag) {

                            // 获取压缩后的大小

                            uni.getFileSystemManager().readFile({

                                filePath: res.tempFilePath,

                                success: ({ data }) => {

                                    image.compressSize = data.byteLength

                                    resolve(image)

                                },

                                fail: _ => resolve(image)

                            })

                        } else {

                            resolve(image)

                        }

                    },

                    fail: _ => {

                        resolve(image)

                    }

                }

                // 缩放图片

                if (scaleFlag && width > scaleTargetWidth) {

                    option.compressedWidth = scaleTargetWidth

                }

                uni.compressImage(option)

            } else {

                resolve(image)

            }

        })

    },

    // 四舍五入

    toFixed (value = 0, decimal = 2) {

        if (!value || isNaN(Number(value))) {

            return value

        }

        let valueStr = String(value)

        if (valueStr.length < 2 || valueStr.lastIndexOf('.') < 0) {

            return value

        }

        const multiplier = Math.pow(10, decimal + 1)

        const valueMultiplier = Math.trunc(value * multiplier)

        const valueMultiplierStr = String(valueMultiplier)

        return (Number(valueMultiplierStr.substring(0, valueMultiplierStr.length - 1))

            + (Number(valueMultiplierStr.substring(valueMultiplierStr.length - 1)) >= 5 ? 1 : 0)) / Math.pow(10, decimal)

    },

相关文章:

  • 【数据结构 · 初阶】- 单链表
  • 算法训练之动态规划(三)
  • Python 实现如何电商网站滚动翻页爬取
  • 亚马逊Amazon商品详情API接口概述,json数据示例返回(测试)
  • opencv人脸性别年龄检测
  • Zotero PDF Translate 翻译插件使用OpenAI API配置教程
  • vue+flask图书知识图谱推荐系统
  • Next.js + Droplet:高并发视频内容平台部署与优化扩展实战
  • 小迪安全-tp框架反序列化,利用链,rce执行,文件删除
  • AI助手:Claude
  • 深入理解全排列算法:DFS与回溯的完美结合
  • 高级java每日一道面试题-2025年3月23日-微服务篇[Nacos篇]-如何使用Nacos进行服务发现?
  • SpringBoot企业级开发之【用户模块-更新用户基本信息】
  • OSPF不规则区域
  • ubuntu20.04在mid360部署direct_lidar_odometry(DLO)
  • HP DeskJet 1212 Printer UOS/Ubuntu下驱动安装
  • Kaggle-Housing Prices-(回归+Ridge,Lasso,Xgboost模型融合)
  • DeepSeek+新媒体运营落地实操方法
  • 洛谷普及B3694 数列离散化
  • 深度学习实战:从零构建图像分类API(Flask/FastAPI版)
  • wordpress 日历插件下载/seo什么职位
  • 怎么用vs做网站开发/seo优化培训
  • wordpress目录手机版/包头整站优化
  • 网站建设的公司在哪找/如何注册域名网站
  • 百度外推发帖软件/企业seo网络营销
  • 东莞网站制作建设收费/网络推广文案