| 
					
				 | 
			
			
				@@ -0,0 +1,368 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const networkReg = /^(http|\/\/)/; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const isBase64 = (path) => /^data:image\/(\w+);base64/.test(path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function sleep(delay) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return new Promise(resolve => setTimeout(resolve, delay)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let {platform, SDKVersion} = uni.getSystemInfoSync()  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const isPC = /windows|mac/.test(platform) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 缓存图片 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let cache = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function isNumber(value) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return /^-?\d+(\.\d+)?$/.test(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function toPx(value, baseSize, isDecimal = false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 如果是数字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (typeof value === 'number') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return value 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 如果是字符串数字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (isNumber(value)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return value * 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// 如果有单位 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (typeof value === 'string') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const reg = /^-?([0-9]+)?([.]{1}[0-9]+){0,1}(em|rpx|px|%)$/g 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const results = reg.exec(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (!value || !results) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const unit = results[3]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		value = parseFloat(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let res = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (unit === 'rpx') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			res = uni.upx2px(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else if (unit === 'px') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			res = value * 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else if (unit === '%') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			res = value * toPx(baseSize) / 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else if (unit === 'em') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			res = value * toPx(baseSize || 14); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return isDecimal ? res.toFixed(2) * 1 : Math.round(res); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 计算版本 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function compareVersion(v1, v2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	v1 = v1.split('.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	v2 = v2.split('.') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const len = Math.max(v1.length, v2.length) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	while (v1.length < len) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		v1.push('0') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	while (v2.length < len) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		v2.push('0') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for (let i = 0; i < len; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const num1 = parseInt(v1[i], 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const num2 = parseInt(v2[i], 10) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (num1 > num2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else if (num1 < num2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function gte(version) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // #ifdef MP-ALIPAY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  SDKVersion = my.SDKVersion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  // #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return compareVersion(SDKVersion, version) >= 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function canIUseCanvas2d() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #ifdef MP-WEIXIN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return gte('2.9.2'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #ifdef MP-ALIPAY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return gte('2.7.15'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #ifdef MP-TOUTIAO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return gte('1.78.0'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// #ifdef MP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export const prefix = () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #ifdef MP-TOUTIAO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return tt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #ifdef MP-WEIXIN 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return wx 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #ifdef MP-BAIDU 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return swan 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #ifdef MP-ALIPAY 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return my 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #ifdef MP-QQ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return qq 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #ifdef MP-360 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return qh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * base64转路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param {Object} base64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function base64ToPath(base64) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const [, format] = /^data:image\/(\w+);base64,/.exec(base64) || []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #ifdef MP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const fs = uni.getFileSystemManager() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//自定义文件名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (!format) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			reject(new Error('ERROR_BASE64SRC_PARSE')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const time = new Date().getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let pre = prefix() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #ifdef MP-TOUTIAO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const filePath = `${pre.getEnvInfoSync().common.USER_DATA_PATH}/${time}.${format}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #ifndef MP-TOUTIAO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const filePath = `${pre.env.USER_DATA_PATH}/${time}.${format}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		fs.writeFile({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			filePath, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			data: base64.split(',')[1], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			encoding: 'base64', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			success() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				resolve(filePath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			fail(err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				console.error(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				reject(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #ifdef H5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// mime类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let mimeString = base64.split(',')[0].split(':')[1].split(';')[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//base64 解码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let byteString = atob(base64.split(',')[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//创建缓冲数组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let arrayBuffer = new ArrayBuffer(byteString.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		//创建视图 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let intArray = new Uint8Array(arrayBuffer); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		for (let i = 0; i < byteString.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			intArray[i] = byteString.charCodeAt(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		resolve(URL.createObjectURL(new Blob([intArray], { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			type: mimeString 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #ifdef APP-PLUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		bitmap.loadBase64Data(base64, () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if (!format) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				reject(new Error('ERROR_BASE64SRC_PARSE')) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const time = new Date().getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			const filePath = `_doc/uniapp_temp/${time}.${format}` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			bitmap.save(filePath, {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					bitmap.clear() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					resolve(filePath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				(error) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					bitmap.clear() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					reject(error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, (error) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			bitmap.clear() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			reject(error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 路径转base64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @param {Object} string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function pathToBase64(path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (/^data:/.test(path)) return path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #ifdef H5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let image = new Image(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		image.setAttribute("crossOrigin", 'Anonymous'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		image.onload = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			let canvas = document.createElement('canvas'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			canvas.width = this.naturalWidth; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			canvas.height = this.naturalHeight; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			canvas.getContext('2d').drawImage(image, 0, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			let result = canvas.toDataURL('image/png') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			resolve(result); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			canvas.height = canvas.width = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		image.src = path + '?v=' + Math.random() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		image.onerror = (error) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			reject(error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #ifdef MP 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (uni.canIUse('getFileSystemManager')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			uni.getFileSystemManager().readFile({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				filePath: path, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				encoding: 'base64', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				success: (res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					resolve('data:image/png;base64,' + res.data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fail: (error) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					console.error({error, path}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					reject(error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #ifdef APP-PLUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), (entry) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			entry.file((file) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				const fileReader = new plus.io.FileReader() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fileReader.onload = (data) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					resolve(data.target.result) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fileReader.onerror = (error) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					reject(error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fileReader.readAsDataURL(file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}, reject) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, reject) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function getImageInfo(path, useCORS) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	const isCanvas2D = this && this.canvas && this.canvas.createImage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return new Promise(async (resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// let time = +new Date() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		let src = path.replace(/^@\//,'/') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (cache[path] && cache[path].errMsg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			resolve(cache[path]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// #ifdef MP || APP-PLUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if (isBase64(path) && (isCanvas2D ? isPC : true)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					src = await base64ToPath(path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// #ifdef H5 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if(useCORS) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					src = await pathToBase64(path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				reject({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					...error, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					src 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// #ifndef APP-NVUE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if(isCanvas2D && !isPC) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				const img = this.canvas.createImage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				img.onload = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					const image = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						path: img, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						width:  img.width, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						height:  img.height 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					cache[path] = image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					resolve(cache[path]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				img.onerror = function(err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					reject({err,path}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				img.src = src 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			uni.getImageInfo({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				src, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				success: (image) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					const localReg = /^\.|^\/(?=[^\/])/; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// #ifdef MP-WEIXIN || MP-BAIDU || MP-QQ || MP-TOUTIAO 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					image.path = localReg.test(src) ?  `/${image.path}` : image.path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(isCanvas2D) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						const img = this.canvas.createImage() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						img.onload = function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							image.path = img 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							cache[path] = image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							resolve(cache[path]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						img.onerror = function(err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							reject({err,path}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						img.src = src 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// #ifdef APP-PLUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// console.log('getImageInfo', +new Date() - time) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// ios 比较严格 可能需要设置跨域 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if(uni.getSystemInfoSync().osName == 'ios' && useCORS) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						pathToBase64(image.path).then(base64 => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							image.path = base64 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							cache[path] = image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							resolve(cache[path]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}).catch(err => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							console.error({err, path}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+							reject({err,path}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					cache[path] = image 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					resolve(cache[path]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				fail(err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					console.error({err, path}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					reject({err,path}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// #ifdef APP-PLUS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const getLocalFilePath = (path) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		.indexOf('_downloads') === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (path.indexOf('file://') === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (path.indexOf('/storage/emulated/0/') === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if (path.indexOf('/') === 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		const localFilePath = plus.io.convertAbsoluteFileSystem(path) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if (localFilePath !== path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return localFilePath 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			path = path.substr(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return '_www/' + path 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// #endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 |