微信小程序跳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)

},

相关推荐
说私域12 分钟前
社群招募文案的核心构建要点与工具赋能路径——基于AI智能名片链动2+1模式商城小程序的实践研究
人工智能·小程序·私域运营
_ZeroKing2 小时前
自制智能门锁:NFC 刷卡 + 小程序远程开锁(完整实战记录)
嵌入式硬件·小程序·notepad++·arduino
Code Slacker2 小时前
第八届传智杯AI微信小程序开发挑战赛练习题库(四)
notepad++
郑州光合科技余经理2 小时前
可独立部署的Java同城O2O系统架构:技术落地
java·开发语言·前端·后端·小程序·系统架构·uni-app
阿斌_bingyu7094 小时前
眼镜店AR在线试戴小程序技术解决方案
小程序·ar
计算机毕设指导64 小时前
基于微信小程序的智能停车场管理系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
2501_933907215 小时前
如何选择西安优质小程序开发服务与本凡码农合作?
科技·微信小程序·小程序
说私域5 小时前
破局互联网产品开发困境:开源AI智能名片链动2+1模式S2B2C商城小程序的实践与启示
人工智能·小程序·开源·私域运营
金山毒霸电脑医生18 小时前
Notepad++下载安装教程(2026 最新版):安全下载、安装步骤及中文界面设置详解
文本编辑器·notepad++·windows软件·notepad++下载安装教程
沛沛老爹19 小时前
跨平台Agent Skills开发实战:一次编写,多处运行的终极指南
notepad++