| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364 | 
							- <template name="yq-avatar">
 
- 	<view>
 
- 		<image :src="imgSrc.imgSrc" @click="fSelect" :style="[ iS ]" class="my-avatar"></image>
 
- 		<canvas canvas-id="avatar-canvas" id="avatar-canvas" class="my-canvas" :style="{top: sT, height: csH}"
 
- 		 disable-scroll="false"></canvas>
 
- 		<canvas canvas-id="oper-canvas" id="oper-canvas" class="oper-canvas" :style="{top: sT, height: csH}"
 
- 		 disable-scroll="false" @touchstart="fStart" @touchmove="fMove" @touchend="fEnd"></canvas>
 
- 		<canvas canvas-id="prv-canvas" id="prv-canvas" class="prv-canvas" disable-scroll="false" 
 
- 		@touchstart="fHideImg" :style="{ height: csH, top: pT }"></canvas>
 
- 		<!--<view class="oper-wrapper" :style="{display: sD, top:tp}">-->
 
- 		<view class="oper-wrapper" :style="{display: sD}">
 
- 			<view class="oper">
 
- 				<view class="btn-wrapper" v-if="sO">
 
- 					<view @click="fSelect" hover-class="hover" :style="{width: bW}"><text>重选</text></view>
 
- 					<view @click="fClose" hover-class="hover" :style="{width: bW}"><text>关闭</text></view>
 
- 					<view @click="fRotate" hover-class="hover" :style="{width: bW, display: bD}"><text>旋转</text></view>
 
- 					<view @click="fPreview" hover-class="hover" :style="{width: bW}"><text>预览</text></view>
 
- 					<view @click="fUpload" hover-class="hover" :style="{width: bW}"><text>上传</text></view>
 
- 				</view>
 
- 				<view class="clr-wrapper" v-else>
 
- 					<slider class="my-slider" @change="fColorChange" block-size="25" value="0" min="-100" max="100" activeColor="red"
 
- 					 backgroundColor="green" block-color="grey" show-value></slider>
 
- 					<view @click="fPrvUpload" hover-class="hover" :style="{width: bW}"><text>上传</text></view>
 
- 				</view>
 
- 			</view>
 
- 		</view>
 
- 	</view>
 
- </template>
 
- <script>
 
- 	"use strict";
 
- 	const tH = 50;
 
- 	export default {
 
- 		name: "yq-avatar",
 
- 		data() {
 
- 			return {
 
- 				csH: '0px',
 
- 				sD: 'none',
 
- 				sT: '-10000px',
 
- 				pT: '-10000px',
 
- 				iS: {},
 
- 				sS: {},
 
- 				sO: true,
 
- 				bW: '19%',
 
- 				bD: 'flex',
 
- 				tp: 0,
 
- 				imgSrc: {
 
- 					imgSrc: ''
 
- 				}
 
- 			};
 
- 		},
 
- 		watch: {
 
- 			avatarSrc() {
 
- 				this.imgSrc.imgSrc = this.avatarSrc;
 
- 			}
 
- 		},
 
- 		props: {
 
- 			avatarSrc: '',
 
- 			avatarStyle: '',
 
- 			selWidth: '',
 
- 			selHeight: '',
 
- 			expWidth: '',
 
- 			expHeight: '',
 
- 			minScale: '',
 
- 			maxScale: '',
 
- 			canScale: '',
 
- 			canRotate: '',
 
- 			lockWidth: '',
 
- 			lockHeight: '',
 
- 			stretch: '',
 
- 			lock: '',
 
- 			fileType: '',
 
- 			noTab: '',
 
- 			inner: '',
 
- 			quality: '',
 
- 			index: '',
 
- 			bgImage: '',
 
- 		},
 
- 		created() {
 
- 			this.cc = uni.createCanvasContext('avatar-canvas', this);
 
- 			this.cco = uni.createCanvasContext('oper-canvas', this);
 
- 			this.ccp = uni.createCanvasContext('prv-canvas', this);
 
- 			this.qlty = parseFloat(this.quality) || 1;
 
- 			this.imgSrc.imgSrc = this.avatarSrc;
 
- 			this.letRotate = (this.canRotate === false || this.inner === true || this.inner === 'true' || this.canRotate === 'false') ? 0 : 1;
 
- 			this.letScale = (this.canScale === false || this.canScale === 'false') ? 0 : 1;
 
- 			this.isin = (this.inner === true || this.inner === 'true') ? 1 : 0;
 
- 			this.indx = this.index || undefined;
 
- 			this.mnScale = parseFloat(this.minScale) || 0.3;
 
- 			this.mxScale = parseFloat(this.maxScale) || 4;
 
- 			this.noBar = (this.noTab === true || this.noTab === 'true') ? 1 : 0;
 
- 			this.stc = this.stretch;
 
- 			this.lck = this.lock;
 
- 			this.fType = this.fileType === 'jpg' ? 'jpg' : 'png';
 
- 			if (this.isin||!this.letRotate) {
 
- 				this.bW = '24%';
 
- 				this.bD = 'none';
 
- 			} else {
 
- 				this.bW = '19%';
 
- 				this.bD = 'flex';
 
- 			}
 
- 			
 
- 			if (this.noBar) {
 
- 				this.fWindowResize();
 
- 			} else {
 
- 				uni.showTabBar({
 
- 					fail: ()=>{
 
- 						this.noBar = 1;
 
- 					},
 
- 					success: ()=>{
 
- 						this.noBar = 0;
 
- 					},
 
- 					complete: (res) => {
 
- 						this.fWindowResize();
 
- 					}
 
- 				});
 
- 			}
 
- 		},
 
- 		methods: {
 
- 			fWindowResize() {
 
- 				let sysInfo = uni.getSystemInfoSync();
 
- 				this.platform = sysInfo.platform;
 
- 				this.wW = sysInfo.windowWidth;
 
- 				// #ifdef H5
 
- 				this.drawTop = sysInfo.windowTop;
 
- 				// #endif
 
- 				// #ifndef H5
 
- 				this.drawTop = 0;
 
- 				// #endif
 
- 				
 
- 				// #ifdef MP-ALIPAY
 
- 				this.wH = sysInfo.screenHeight - sysInfo.statusBarHeight - sysInfo.titleBarHeight;
 
- 				this.csH = this.wH - tH  + 'px';
 
- 				// #endif
 
- 				
 
- 				// #ifndef MP-ALIPAY
 
- 				this.wH = sysInfo.windowHeight;
 
- 				if(!this.noBar) this.wH += tH;
 
- 				this.csH = this.wH - tH  + 'px';
 
- 				// #endif
 
- 				
 
- 				this.tp = this.csH;
 
- 				// #ifdef H5
 
- 				this.tp =  sysInfo.windowTop + parseInt(this.csH)+ 'px';
 
- 				// #endif
 
- 				
 
- 				this.pxRatio = this.wW / 750;
 
- 				let style = this.avatarStyle;
 
- 				if (style && style !== true && (style = style.trim())) {
 
- 					style = style.split(';');
 
- 					let obj = {};
 
- 					for (let v of style) {
 
- 						if (!v) continue;
 
- 						v = v.trim().split(':');
 
- 						if (v[1].toString().indexOf('upx') >= 0) {
 
- 							let arr = v[1].trim().split(' ');
 
- 							for (let k in arr) {
 
- 								if (!arr[k]) continue;
 
- 								if (arr[k].toString().indexOf('upx') >= 0) {
 
- 									arr[k] = parseFloat(arr[k]) * this.pxRatio + 'px';
 
- 								}
 
- 							}
 
- 							v[1] = arr.join(' ');
 
- 						}
 
- 						obj[v[0].trim()] = v[1].trim();
 
- 					}
 
- 					this.iS = obj;
 
- 				}
 
- 				this.expWidth && (this.eW = this.expWidth.toString().indexOf('upx') >= 0 ? parseInt(this.expWidth) * this.pxRatio :
 
- 					parseInt(this.expWidth));
 
- 				this.expHeight && (this.eH = this.expHeight.toString().indexOf('upx') >= 0 ? parseInt(this.expHeight) * this.pxRatio :
 
- 					parseInt(this.expHeight));
 
- 				
 
- 				if (this.sD === 'flex') {
 
- 					this.fDrawInit(true);
 
- 				}
 
- 				this.fHideImg();
 
- 			},
 
- 			fSelect() {
 
- 				if (this.fSelecting) return;
 
- 				this.fSelecting = true;
 
- 				setTimeout(() => {
 
- 					this.fSelecting = false;
 
- 				}, 500);
 
- 				uni.chooseImage({
 
- 					count: 1,
 
- 					sizeType: ['original', 'compressed'],
 
- 					sourceType: ['album', 'camera'],
 
- 					success: (r) => {
 
- 						// #ifdef MP-ALIPAY
 
- 						uni.showLoading();
 
- 						// #endif
 
- 						// #ifndef MP-ALIPAY
 
- 						uni.showLoading({
 
- 							title: '加载中...',
 
- 							mask: true
 
- 						});
 
- 						// #endif
 
- 						let path = this.imgPath = r.tempFilePaths[0];
 
- 						uni.getImageInfo({
 
- 							src: path,
 
- 							success: r => {
 
- 								this.imgWidth = r.width;
 
- 								this.imgHeight = r.height;
 
- 								this.path = path;
 
- 								if (!this.hasSel) {
 
- 									let style = this.sS || {};
 
- 									if (this.selWidth && this.selHeight) {
 
- 										let sW = this.selWidth.toString().indexOf('upx') >= 0 ? parseInt(this.selWidth) * this.pxRatio : parseInt(
 
- 												this.selWidth),
 
- 											sH = this.selHeight.toString().indexOf('upx') >= 0 ? parseInt(this.selHeight) * this.pxRatio : parseInt(
 
- 												this.selHeight);
 
- 										style.width = sW + 'px';
 
- 										style.height = sH + 'px';
 
- 										style.top = ((this.wH - sH - tH)|0) / 2 + 'px';
 
- 										style.left = ((this.wW - sW)|0) / 2 + 'px';
 
- 									} else {
 
- 										uni.showModal({
 
- 											title: '裁剪框的宽或高没有设置',
 
- 											showCancel: false
 
- 										})
 
- 										return;
 
- 									}
 
- 									this.sS = style;
 
- 								}
 
- 								if (this.noBar) {
 
- 									this.fDrawInit(true);
 
- 								} else {
 
- 									uni.hideTabBar({
 
- 										complete: () => {
 
- 											this.fDrawInit(true);
 
- 										}
 
- 									});
 
- 								}
 
- 							},
 
- 							fail: () => {
 
- 								uni.showToast({
 
- 									title: "请选择正确图片",
 
- 									duration: 2000,
 
- 								})
 
- 							},
 
- 							complete() {
 
- 								uni.hideLoading();
 
- 							}
 
- 						});
 
- 					}
 
- 				})
 
- 			},
 
- 			fUpload() {
 
- 				if (this.fUploading) return;
 
- 				this.fUploading = true;
 
- 				setTimeout(() => {
 
- 					this.fUploading = false;
 
- 				}, 1000)
 
- 				let style = this.sS,
 
- 					x = parseInt(style.left),
 
- 					y = parseInt(style.top),
 
- 					width = parseInt(style.width),
 
- 					height = parseInt(style.height),
 
- 					expWidth = this.eW || (width* this.pixelRatio),
 
- 					expHeight = this.eH || (height* this.pixelRatio);
 
- 				// #ifdef MP-ALIPAY
 
- 				uni.showLoading();
 
- 				// #endif
 
- 				// #ifndef MP-ALIPAY
 
- 				uni.showLoading({
 
- 					title: '加载中...',
 
- 					mask: true
 
- 				});
 
- 				// #endif
 
- 				this.sD = 'none';
 
- 				this.sT = '-10000px';
 
- 				this.hasSel = false;
 
- 				this.fHideImg();
 
- 				// #ifdef MP-ALIPAY
 
- 				this.cc.toTempFilePath({
 
- 					x: x,
 
- 					y: y,
 
- 					width: width,
 
- 					height: height,
 
- 					destWidth: expWidth,
 
- 					destHeight: expHeight,
 
- 					fileType: this.fType,
 
- 					quality: this.qlty,
 
- 					success: (r) => {
 
- 						r = r.apFilePath;
 
- 						this.$emit("upload", {
 
- 							avatar: this.imgSrc,
 
- 							path: r,
 
- 							index: this.indx,
 
- 							data: this.rtn,
 
- 							base64: this.base64 || null
 
- 						});
 
- 					},
 
- 					fail: (res) => {
 
- 						uni.showToast({
 
- 							title: "error1",
 
- 							duration: 2000,
 
- 						})
 
- 					},
 
- 					complete: () => {
 
- 						uni.hideLoading();
 
- 						this.noBar || uni.showTabBar();
 
- 						this.$emit("end");
 
- 					}
 
- 				});
 
- 				// #endif
 
- 				// #ifndef MP-ALIPAY
 
- 				uni.canvasToTempFilePath({
 
- 					x: x,
 
- 					y: y,
 
- 					width: width,
 
- 					height: height,
 
- 					destWidth: expWidth,
 
- 					destHeight: expHeight,
 
- 					canvasId: 'avatar-canvas',
 
- 					fileType: this.fType,
 
- 					quality: this.qlty,
 
- 					success: (r) => {
 
- 						r = r.tempFilePath;
 
- 						// #ifdef H5
 
- 						this.btop(r).then((r) => {
 
- 							this.$emit("upload", {
 
- 								avatar: this.imgSrc,
 
- 								path: r,
 
- 								index: this.indx,
 
- 								data: this.rtn,
 
- 								base64: this.base64 || null
 
- 							});
 
- 							return;
 
- 						})
 
- 						// #endif
 
- 						// #ifndef H5
 
- 						this.$emit("upload", {
 
- 							avatar: this.imgSrc,
 
- 							path: r,
 
- 							index: this.indx,
 
- 							data: this.rtn,
 
- 							base64: this.base64 || null
 
- 						});
 
- 						// #endif
 
- 					},
 
- 					fail: (res) => {
 
- 						uni.showToast({
 
- 							title: "error1",
 
- 							duration: 2000,
 
- 						})
 
- 					},
 
- 					complete: () => {
 
- 						uni.hideLoading();
 
- 						this.noBar || uni.showTabBar();
 
- 						this.$emit("end");
 
- 					}
 
- 				}, this);
 
- 				// #endif
 
- 			},
 
- 			fPrvUpload() {
 
- 				if (this.fPrvUploading) return;
 
- 				this.fPrvUploading = true;
 
- 				setTimeout(() => {
 
- 					this.fPrvUploading = false;
 
- 				}, 1000)
 
- 				let style = this.sS,
 
- 					destWidth = parseInt(style.width),
 
- 					destHeight = parseInt(style.height),
 
- 					prvX = this.prvX,
 
- 					prvY = this.prvY,
 
- 					prvWidth = this.prvWidth,
 
- 					prvHeight = this.prvHeight,
 
- 					expWidth = this.eW || (parseInt(style.width) * this.pixelRatio),
 
- 					expHeight = this.eH || (parseInt(style.height) * this.pixelRatio);
 
- 				// #ifdef MP-ALIPAY
 
- 				uni.showLoading();
 
- 				// #endif
 
- 				// #ifndef MP-ALIPAY
 
- 				uni.showLoading({
 
- 					title: '加载中...',
 
- 					mask: true
 
- 				});
 
- 				// #endif
 
- 				this.sD = 'none';
 
- 				this.sT = '-10000px';
 
- 				this.hasSel = false;
 
- 				this.fHideImg();
 
- 				// #ifdef MP-ALIPAY
 
- 				this.ccp.toTempFilePath({
 
- 					x: prvX,
 
- 					y: prvY,
 
- 					width: prvWidth,
 
- 					height: prvHeight,
 
- 					destWidth: expWidth,
 
- 					destHeight: expHeight,
 
- 					fileType: this.fType,
 
- 					quality: this.qlty,
 
- 					success: (r) => {
 
- 						r = r.apFilePath;
 
- 						this.$emit("upload", {
 
- 							avatar: this.imgSrc,
 
- 							path: r,
 
- 							index: this.indx,
 
- 							data: this.rtn,
 
- 							base64: this.base64 || null
 
- 						});
 
- 					},
 
- 					fail: () => {
 
- 						uni.showToast({
 
- 							title: "error_prv",
 
- 							duration: 2000,
 
- 						})
 
- 					},
 
- 					complete: () => {
 
- 						uni.hideLoading();
 
- 						this.noBar || uni.showTabBar();
 
- 						this.$emit("end");
 
- 					}
 
- 				});
 
- 				// #endif
 
- 				// #ifndef MP-ALIPAY
 
- 				uni.canvasToTempFilePath({
 
- 					x: prvX,
 
- 					y: prvY,
 
- 					width: prvWidth,
 
- 					height: prvHeight,
 
- 					destWidth: expWidth,
 
- 					destHeight: expHeight,
 
- 					canvasId: 'prv-canvas',
 
- 					fileType: this.fType,
 
- 					quality: this.qlty,
 
- 					success: (r) => {
 
- 						r = r.tempFilePath;
 
- 						// #ifdef H5
 
- 						this.btop(r).then((r) => {
 
- 							this.$emit("upload", {
 
- 								avatar: this.imgSrc,
 
- 								path: r,
 
- 								index: this.indx,
 
- 								data: this.rtn,
 
- 								base64: this.base64 || null
 
- 							});
 
- 						})
 
- 						// #endif
 
- 						// #ifndef H5
 
- 						this.$emit("upload", {
 
- 							avatar: this.imgSrc,
 
- 							path: r,
 
- 							index: this.indx,
 
- 							data: this.rtn,
 
- 							base64: this.base64 || null
 
- 						});
 
- 						// #endif
 
- 					},
 
- 					fail: () => {
 
- 						uni.showToast({
 
- 							title: "error_prv",
 
- 							duration: 2000,
 
- 						})
 
- 					},
 
- 					complete: () => {
 
- 						uni.hideLoading();
 
- 						this.noBar || uni.showTabBar();
 
- 						this.$emit("end");
 
- 					}
 
- 				}, this);
 
- 				// #endif
 
- 			},
 
- 			fDrawInit(ini = false) {
 
- 				let allWidth = this.wW,
 
- 					allHeight = this.wH,
 
- 					imgWidth = this.imgWidth,
 
- 					imgHeight = this.imgHeight,
 
- 					imgRadio = imgWidth / imgHeight,
 
- 					useWidth = allWidth - 40,
 
- 					useHeight = allHeight - tH - 80,
 
- 					useRadio = useWidth / useHeight,
 
- 					sW = parseInt(this.sS.width),
 
- 					sH = parseInt(this.sS.height);
 
- 				this.fixWidth = 0;
 
- 				this.fixHeight = 0;
 
- 				this.lckWidth = 0;
 
- 				this.lckHeight = 0;
 
- 				switch (this.stc) {
 
- 					case 'x':
 
- 						this.fixWidth = 1;
 
- 						break;
 
- 					case 'y':
 
- 						this.fixHeight = 1;
 
- 						break;
 
- 					case 'long':
 
- 						if (imgRadio > 1) this.fixWidth = 1;
 
- 						else this.fixHeight = 1;
 
- 						break;
 
- 					case 'short':
 
- 						if (imgRadio > 1) this.fixHeight = 1;
 
- 						else this.fixWidth = 1;
 
- 						break;
 
- 					case 'longSel':
 
- 						if (sW > sH) this.fixWidth = 1;
 
- 						else this.fixHeight = 1;
 
- 						break;
 
- 					case 'shortSel':
 
- 						if (sW > sH) this.fixHeight = 1;
 
- 						else this.fixWidth = 1;
 
- 						break;
 
- 				}
 
- 				switch (this.lck) {
 
- 					case 'x':
 
- 						this.lckWidth = 1;
 
- 						break;
 
- 					case 'y':
 
- 						this.lckHeight = 1;
 
- 						break;
 
- 					case 'long':
 
- 						if (imgRadio > 1) this.lckWidth = 1;
 
- 						else this.lckHeight = 1;
 
- 						break;
 
- 					case 'short':
 
- 						if (imgRadio > 1) this.lckHeight = 1;
 
- 						else this.lckWidth = 1;
 
- 						break;
 
- 					case 'longSel':
 
- 						if (sW > sH) this.lckWidth = 1;
 
- 						else this.lckHeight = 1;
 
- 						break;
 
- 					case 'shortSel':
 
- 						if (sW > sH) this.lckHeight = 1;
 
- 						else this.lckWidth = 1;
 
- 						break;
 
- 				}
 
- 				if (this.fixWidth) {
 
- 					useWidth = sW;
 
- 					useHeight = useWidth / imgRadio;
 
- 				} else if (this.fixHeight) {
 
- 					useHeight = sH;
 
- 					useWidth = useHeight * imgRadio;
 
- 				} else if (imgRadio < useRadio) {
 
- 					if (imgHeight < useHeight) {
 
- 						useWidth = imgWidth;
 
- 						useHeight = imgHeight;
 
- 					} else {
 
- 						useWidth = useHeight * imgRadio;
 
- 					}
 
- 				} else {
 
- 					if (imgWidth < useWidth) {
 
- 						useWidth = imgWidth;
 
- 						useHeight = imgHeight;
 
- 					} else {
 
- 						useHeight = useWidth / imgRadio;
 
- 					}
 
- 				}
 
- 				if (this.isin) {
 
- 					if (useWidth < sW) {
 
- 						useWidth = sW;
 
- 						useHeight = useWidth / imgRadio;
 
- 						this.lckHeight = 0;
 
- 					}
 
- 					if (useHeight < sH) {
 
- 						useHeight = sH;
 
- 						useWidth = useHeight * imgRadio;
 
- 						this.lckWidth = 0;
 
- 					}
 
- 				}
 
- 				this.scaleSize = 1;
 
- 				this.rotateDeg = 0;
 
- 				this.posWidth = (allWidth - useWidth) / 2 | 0;
 
- 				this.posHeight = (allHeight - useHeight - tH) / 2 | 0;
 
- 				this.useWidth = useWidth | 0;
 
- 				this.useHeight = useHeight | 0;
 
- 				this.centerX = this.posWidth + useWidth / 2;
 
- 				this.centerY = this.posHeight + useHeight / 2;
 
- 				this.focusX = 0;
 
- 				this.focusY = 0;
 
- 				let style = this.sS,
 
- 					left = parseInt(style.left),
 
- 					top = parseInt(style.top),
 
- 					width = parseInt(style.width),
 
- 					height = parseInt(style.height),
 
- 					canvas = this.canvas,
 
- 					canvasOper = this.canvasOper,
 
- 					cc = this.cc,
 
- 					cco = this.cco;
 
- 					
 
- 				cco.beginPath();
 
- 				cco.setLineWidth(3);
 
- 				cco.setGlobalAlpha(1);
 
- 				cco.setStrokeStyle('white');
 
- 				cco.strokeRect(left, top, width, height);
 
- 				
 
- 				cco.setFillStyle('black');
 
- 				cco.setGlobalAlpha(0.5);
 
- 				cco.fillRect(0, 0, this.wW, top);
 
- 				cco.fillRect(0, top, left, height);
 
- 				cco.fillRect(0, top + height, this.wW, this.wH - height - top - tH);
 
- 				cco.fillRect(left + width, top, this.wW - width - left, height);
 
- 				
 
- 				cco.setGlobalAlpha(1);
 
- 				cco.setStrokeStyle('red');
 
- 				cco.moveTo(left+15, top);
 
- 				cco.lineTo(left, top);
 
- 				cco.lineTo(left, top+15);
 
- 				cco.moveTo(left+width-15, top);
 
- 				cco.lineTo(left+width, top);
 
- 				cco.lineTo(left+width, top+15);
 
- 				cco.moveTo(left+15, top+height);
 
- 				cco.lineTo(left, top+height);
 
- 				cco.lineTo(left, top+height-15);
 
- 				cco.moveTo(left+width-15, top+height);
 
- 				cco.lineTo(left+width, top+height);
 
- 				cco.lineTo(left+width, top+height-15);
 
- 				cco.stroke();
 
- 				
 
- 				cco.draw(false, () => {
 
- 					if (ini) {
 
- 						this.sD = 'flex';
 
- 						this.sT = this.drawTop + 'px';
 
- 						this.fDrawImage(true);
 
- 					}
 
- 				});
 
- 				this.$emit("init");
 
- 			},
 
- 			fDrawImage(ini = false) {
 
- 				let tm_now = Date.now();
 
- 				if (tm_now - this.drawTm < 20) return;
 
- 				this.drawTm = tm_now;
 
- 				let cc = this.cc,
 
- 					imgWidth = this.useWidth * this.scaleSize,
 
- 					imgHeight = this.useHeight * this.scaleSize;
 
- 				// #ifdef MP-ALIPAY	
 
- 				cc.save();
 
- 				// #endif
 
- 				
 
- 				if (this.bgImage) {
 
- 					// #ifdef MP-ALIPAY
 
- 					cc.clearRect(0, 0, this.wW, this.wH - tH);
 
- 					// #endif
 
- 					// #ifndef MP-ALIPAY
 
- 					cc.drawImage(this.bgImage, 0, 0, this.wW, this.wH - tH);
 
- 					// #endif
 
- 				} else {
 
- 					cc.fillRect(0, 0, this.wW, this.wH - tH);
 
- 				}
 
- 				if (this.isin) {
 
- 					let cx = this.focusX * (this.scaleSize - 1),
 
- 						cy = this.focusY * (this.scaleSize - 1);
 
- 					cc.translate(this.centerX, this.centerY);
 
- 					cc.rotate(this.rotateDeg * Math.PI / 180);
 
- 					cc.drawImage(this.imgPath, this.posWidth-this.centerX-cx, this.posHeight-this.centerY-cy, imgWidth, imgHeight);
 
- 				
 
- 				} else {
 
- 					cc.translate(this.posWidth + imgWidth / 2, this.posHeight + imgHeight / 2);
 
- 					cc.rotate(this.rotateDeg * Math.PI / 180);
 
- 					cc.drawImage(this.imgPath, -imgWidth / 2, -imgHeight / 2, imgWidth, imgHeight);
 
- 				}
 
- 				cc.draw(false);
 
- 				// #ifdef MP-ALIPAY
 
- 				cc.restore();
 
- 				// #endif
 
- 			},
 
- 			fPreview() {
 
- 				if (this.fPreviewing) return;
 
- 				this.fPreviewing = true;
 
- 				setTimeout(() => {
 
- 					this.fPreviewing = false;
 
- 				}, 1000);
 
- 				let style = this.sS,
 
- 					x = parseInt(style.left),
 
- 					y = parseInt(style.top),
 
- 					width = parseInt(style.width),
 
- 					height = parseInt(style.height);
 
- 				// #ifdef MP-ALIPAY
 
- 				uni.showLoading();
 
- 				// #endif
 
- 				// #ifndef MP-ALIPAY
 
- 				uni.showLoading({
 
- 					title: '加载中...',
 
- 					mask: true
 
- 				});
 
- 				// #endif
 
- 				// #ifdef MP-ALIPAY
 
- 				this.cc.toTempFilePath({
 
- 					x: x,
 
- 					y: y,
 
- 					width: width,
 
- 					height: height,
 
- 					expWidth: width * this.pixelRatio,
 
- 					expHeight: height * this.pixelRatio,
 
- 					fileType: this.fType,
 
- 					quality: this.qlty,
 
- 					success: (r) => {
 
- 						this.prvImgTmp = r = r.apFilePath;
 
- 						let ccp = this.ccp,
 
- 							prvX = this.wW,
 
- 							prvY = parseInt(this.csH),
 
- 							prvWidth = parseInt(this.sS.width),
 
- 							prvHeight = parseInt(this.sS.height),
 
- 							useWidth = prvX - 40,
 
- 							useHeight = prvY - 80,
 
- 							radio = useWidth / prvWidth,
 
- 							rHeight = prvHeight * radio;
 
- 						if (rHeight < useHeight) {
 
- 							prvWidth = useWidth;
 
- 							prvHeight = rHeight;
 
- 						} else {
 
- 							radio = useHeight / prvHeight;
 
- 							prvWidth *= radio;
 
- 							prvHeight = useHeight;
 
- 						}
 
- 						ccp.fillRect(0, 0, prvX, prvY);
 
- 						this.prvX = prvX = ((prvX - prvWidth) / 2) | 0;
 
- 						this.prvY = prvY = ((prvY - prvHeight) / 2) | 0;
 
- 						this.prvWidth = prvWidth = prvWidth | 0;
 
- 						this.prvHeight = prvHeight = prvHeight | 0;
 
- 						ccp.drawImage(r, prvX, prvY, prvWidth, prvHeight);
 
- 						ccp.draw(false);
 
- 						this.sO = false;
 
- 						this.pT = '0';
 
- 					},
 
- 					fail: () => {
 
- 						uni.showToast({
 
- 							title: "error2",
 
- 							duration: 2000,
 
- 						})
 
- 					},
 
- 					complete: () => {
 
- 						uni.hideLoading();
 
- 					}
 
- 				});
 
- 				// #endif
 
- 				// #ifndef MP-ALIPAY
 
- 				uni.canvasToTempFilePath({
 
- 					x: x,
 
- 					y: y,
 
- 					width: width,
 
- 					height: height,
 
- 					expWidth: width * this.pixelRatio,
 
- 					expHeight: height * this.pixelRatio,
 
- 					canvasId: 'avatar-canvas',
 
- 					fileType: this.fType,
 
- 					quality: this.qlty,
 
- 					success: (r) => {
 
- 						this.prvImgTmp = r = r.tempFilePath;
 
- 						let ccp = this.ccp,
 
- 							prvX = this.wW,
 
- 							prvY = parseInt(this.csH);
 
- 						// #ifndef H5||MP-WEIXIN||APP-PLUS
 
- 						prvY += tH;
 
- 						// #endif
 
- 						// #ifdef APP-PLUS
 
- 						if (this.platform === 'android') {
 
- 							prvY += tH;
 
- 						}
 
- 						// #endif
 
- 						let prvWidth = parseInt(this.sS.width),
 
- 							prvHeight = parseInt(this.sS.height),
 
- 							useWidth = prvX - 40,
 
- 							useHeight = prvY - 80,
 
- 							radio = useWidth / prvWidth,
 
- 							rHeight = prvHeight * radio;
 
- 						if (rHeight < useHeight) {
 
- 							prvWidth = useWidth;
 
- 							prvHeight = rHeight;
 
- 						} else {
 
- 							radio = useHeight / prvHeight;
 
- 							prvWidth *= radio;
 
- 							prvHeight = useHeight;
 
- 						}
 
- 						ccp.fillRect(0, 0, prvX, prvY);
 
- 						this.prvX = prvX = ((prvX - prvWidth) / 2) | 0;
 
- 						this.prvY = prvY = ((prvY - prvHeight) / 2) | 0;
 
- 						this.prvWidth = prvWidth = prvWidth | 0;
 
- 						this.prvHeight = prvHeight = prvHeight | 0;
 
- 						ccp.drawImage(r, prvX, prvY, prvWidth, prvHeight);
 
- 						ccp.draw(false);
 
- 						// #ifdef H5
 
- 						this.btop(r).then((r) => {
 
- 							this.sO = false;
 
- 							this.pT = this.drawTop + 'px';
 
- 						})
 
- 						// #endif
 
- 						
 
- 						this.sO = false; 
 
- 						// if (this.platform === 'android') this.sO = false;
 
- 						this.pT = this.drawTop + 'px';
 
- 					},
 
- 					fail: () => {
 
- 						uni.showToast({
 
- 							title: "error2",
 
- 							duration: 2000,
 
- 						})
 
- 					},
 
- 					complete: () => {
 
- 						uni.hideLoading();
 
- 					}
 
- 				}, this);
 
- 				// #endif
 
- 			},
 
- 			fChooseImg(index = undefined, params = undefined, data = undefined) {
 
- 				if (params) {
 
- 					let sW = params.selWidth,
 
- 						sH = params.selHeight,
 
- 						expWidth = params.expWidth,
 
- 						expHeight = params.expHeight,
 
- 						quality = params.quality,
 
- 						canRotate = params.canRotate,
 
- 						canScale = params.canScale,
 
- 						minScale = params.minScale,
 
- 						maxScale = params.maxScale,
 
- 						stretch = params.stretch,
 
- 						fileType = params.fileType,
 
- 						inner = params.inner,
 
- 						lock = params.lock;
 
- 					expWidth && (this.eW = expWidth.toString().indexOf('upx') >= 0 ? parseInt(expWidth) * this.pxRatio : parseInt(
 
- 						expWidth));
 
- 					expHeight && (this.eH = expHeight.toString().indexOf('upx') >= 0 ? parseInt(expHeight) * this.pxRatio : parseInt(
 
- 						expHeight));
 
- 					this.letRotate = (canRotate === false || inner === true || inner === 'true' || canRotate === 'false') ? 0 : 1;
 
- 					this.letScale = (canScale === false || canScale === 'false') ? 0 : 1;
 
- 					this.qlty = parseFloat(quality) || 1;
 
- 					this.mnScale = parseFloat(minScale) || 0.3;
 
- 					this.mxScale = parseFloat(maxScale) || 4;
 
- 					this.stc = stretch;
 
- 					this.isin = (inner === true || inner === 'true') ? 1 : 0;
 
- 					this.fType = fileType === 'jpg' ? 'jpg' : 'png';
 
- 					this.lck = lock;
 
- 					if (this.isin||!this.letRotate) {
 
- 						this.bW = '24%';
 
- 						this.bD = 'none';
 
- 					} else {
 
- 						this.bW = '19%';
 
- 						this.bD = 'flex';
 
- 					}
 
- 					if (sW && sH) {
 
- 						sW = sW.toString().indexOf('upx') >= 0 ? parseInt(sW) * this.pxRatio : parseInt(sW);
 
- 						sH = sH.toString().indexOf('upx') >= 0 ? parseInt(sH) * this.pxRatio : parseInt(sH);
 
- 						this.sS.width = sW + 'px';
 
- 						this.sS.height = sH + 'px';
 
- 						this.sS.top = ((this.wH - sH - tH)|0) / 2 + 'px';
 
- 						this.sS.left = ((this.wW - sW)|0) / 2 + 'px';
 
- 						this.hasSel = true;
 
- 					}
 
- 				}
 
- 				this.rtn = data;
 
- 				this.indx = index;
 
- 				this.fSelect();
 
- 			},
 
- 			fRotate() {
 
- 				this.rotateDeg += 90 - this.rotateDeg % 90;
 
- 				this.fDrawImage();
 
- 			},
 
- 			fStart(e) {
 
- 				let touches = e.touches,
 
- 					touch0 = touches[0],
 
- 					touch1 = touches[1];
 
- 				this.touch0 = touch0;
 
- 				this.touch1 = touch1;
 
- 				if (touch1) {
 
- 					let x = touch1.x - touch0.x,
 
- 						y = touch1.y - touch0.y;
 
- 					this.fgDistance = Math.sqrt(x * x + y * y);
 
- 				}
 
- 			},
 
- 			fMove(e) {
 
- 				let touches = e.touches,
 
- 					touch0 = touches[0],
 
- 					touch1 = touches[1];
 
- 				if (touch1) {
 
- 					let x = touch1.x - touch0.x,
 
- 						y = touch1.y - touch0.y,
 
- 						fgDistance = Math.sqrt(x * x + y * y),
 
- 						scaleSize = 0.005 * (fgDistance - this.fgDistance),
 
- 						beScaleSize = this.scaleSize + scaleSize;
 
- 					do {
 
- 						if (!this.letScale) break;
 
- 						if (beScaleSize < this.mnScale) break;
 
- 						if (beScaleSize > this.mxScale) break;
 
- 						let growX = this.useWidth * scaleSize / 2,
 
- 							growY = this.useHeight * scaleSize / 2;
 
- 						if (this.isin) {
 
- 							let imgWidth = this.useWidth * beScaleSize,
 
- 								imgHeight = this.useHeight * beScaleSize,
 
- 								l = this.posWidth - growX,
 
- 								t = this.posHeight - growY,
 
- 								r = l + imgWidth,
 
- 								b = t + imgHeight,
 
- 								left = parseInt(this.sS.left),
 
- 								top = parseInt(this.sS.top),
 
- 								width = parseInt(this.sS.width),
 
- 								height = parseInt(this.sS.height),
 
- 								right = left + width,
 
- 								bottom = top + height,
 
- 								cx, cy;
 
- 							if (imgWidth <= width || imgHeight <= height) break;
 
- 							this.cx = cx = this.focusX * beScaleSize - this.focusX,
 
- 								this.cy = cy = this.focusY * beScaleSize - this.focusY;
 
- 							this.posWidth -= growX;
 
- 							this.posHeight -= growY;
 
- 							if (this.posWidth - cx > left) {
 
- 								this.posWidth = left + cx;
 
- 							}
 
- 							if (this.posWidth + imgWidth - cx < right) {
 
- 								this.posWidth = right - imgWidth + cx;
 
- 							}
 
- 							if (this.posHeight - cy > top) {
 
- 								this.posHeight = top + cy;
 
- 							}
 
- 							if (this.posHeight + imgHeight - cy < bottom) {
 
- 								this.posHeight = bottom - imgHeight + cy;
 
- 							}
 
- 						} else {
 
- 							this.posWidth -= growX;
 
- 							this.posHeight -= growY;
 
- 						}
 
- 						this.scaleSize = beScaleSize;
 
- 					} while (0);
 
- 					this.fgDistance = fgDistance;
 
- 					if (touch1.x !== touch0.x && this.letRotate) {
 
- 						x = (this.touch1.y - this.touch0.y) / (this.touch1.x - this.touch0.x);
 
- 						y = (touch1.y - touch0.y) / (touch1.x - touch0.x);
 
- 						this.rotateDeg += Math.atan((y - x) / (1 + x * y)) * 180 / Math.PI;
 
- 						this.touch0 = touch0;
 
- 						this.touch1 = touch1;
 
- 					}
 
- 					this.fDrawImage();
 
- 				} else if (this.touch0) {
 
- 					let x = touch0.x - this.touch0.x,
 
- 						y = touch0.y - this.touch0.y,
 
- 						beX = this.posWidth + x,
 
- 						beY = this.posHeight + y;
 
- 					if (this.isin) {
 
- 						let imgWidth = this.useWidth * this.scaleSize,
 
- 							imgHeight = this.useHeight * this.scaleSize,
 
- 							l = beX,
 
- 							t = beY,
 
- 							r = l + imgWidth,
 
- 							b = t + imgHeight,
 
- 							left = parseInt(this.sS.left),
 
- 							top = parseInt(this.sS.top),
 
- 							right = left + parseInt(this.sS.width),
 
- 							bottom = top + parseInt(this.sS.height),
 
- 							cx, cy;
 
- 						this.cx = cx = this.focusX * this.scaleSize - this.focusX;
 
- 						this.cy = cy = this.focusY * this.scaleSize - this.focusY;
 
- 						if (!this.lckWidth && Math.abs(x) < 100) {
 
- 							if (left < l - cx) {
 
- 								this.posWidth = left + cx;
 
- 							} else if (right > r - cx) {
 
- 								this.posWidth = right - imgWidth + cx;
 
- 							} else {
 
- 								this.posWidth = beX;
 
- 								this.focusX -= x;
 
- 							}
 
- 						}
 
- 						if (!this.lckHeight && Math.abs(y) < 100) {
 
- 							if (top < t - cy) {
 
- 								this.focusY -= (top + cy - this.posHeight);
 
- 								this.posHeight = top + cy;
 
- 							} else if (bottom > b - cy) {
 
- 								this.focusY -= (bottom + cy - (this.posHeight + imgHeight));
 
- 								this.posHeight = bottom - imgHeight + cy;
 
- 							} else {
 
- 								this.posHeight = beY;
 
- 								this.focusY -= y;
 
- 							}
 
- 						}
 
- 					} else {
 
- 						if (Math.abs(x) < 100 && !this.lckWidth) this.posWidth = beX;
 
- 						if (Math.abs(y) < 100 && !this.lckHeight) this.posHeight = beY;
 
- 						this.focusX -= x;
 
- 						this.focusY -= y;
 
- 					}
 
- 					this.touch0 = touch0;
 
- 					this.fDrawImage();
 
- 				}
 
- 			},
 
- 			fEnd(e) {
 
- 				let touches = e.touches,
 
- 					touch0 = touches && touches[0],
 
- 					touch1 = touches && touches[1];
 
- 				if (touch0) {
 
- 					this.touch0 = touch0;
 
- 				} else {
 
- 					this.touch0 = null;
 
- 					this.touch1 = null;
 
- 				}
 
- 			},
 
- 			fHideImg() {
 
- 				this.prvImg = '';
 
- 				this.pT = '-10000px';
 
- 				this.sO = true;
 
- 				this.prvImgData = null;
 
- 				this.target = null;
 
- 			},
 
- 			fClose() {
 
- 				this.sD = 'none';
 
- 				this.sT = '-10000px';
 
- 				this.hasSel = false;
 
- 				this.fHideImg();
 
- 				this.noBar || uni.showTabBar();
 
- 				this.$emit("end");
 
- 			},
 
- 			fGetImgData() {
 
- 				return new Promise((resolve, reject) => {
 
- 					let prvX = this.prvX,
 
- 						prvY = this.prvY,
 
- 						prvWidth = this.prvWidth,
 
- 						prvHeight = this.prvHeight;
 
- 					// #ifdef MP-ALIPAY
 
- 					this.ccp.getImageData({
 
- 						x: prvX,
 
- 						y: prvY,
 
- 						width: prvWidth,
 
- 						height: prvHeight,
 
- 						success(res) {
 
- 							resolve(res.data);
 
- 						},
 
- 						fail(err) {
 
- 							reject(err);
 
- 						}
 
- 					}, this);
 
- 					// #endif
 
- 					// #ifndef MP-ALIPAY
 
- 					uni.canvasGetImageData({
 
- 						canvasId: 'prv-canvas',
 
- 						x: prvX,
 
- 						y: prvY,
 
- 						width: prvWidth,
 
- 						height: prvHeight,
 
- 						success(res) {
 
- 							resolve(res.data);
 
- 						},
 
- 						fail(err) {
 
- 							reject(err);
 
- 						}
 
- 					}, this);
 
- 					// #endif
 
- 				});
 
- 			},
 
- 			async fColorChange(e) {
 
- 				let tm_now = Date.now();
 
- 				if (tm_now - this.prvTm < 100) return;
 
- 				this.prvTm = tm_now;
 
- 				// #ifdef MP-ALIPAY
 
- 				uni.showLoading();
 
- 				// #endif
 
- 				// #ifndef MP-ALIPAY
 
- 				uni.showLoading({
 
- 					title: '加载中...',
 
- 					mask: true
 
- 				});
 
- 				// #endif
 
- 				if (!this.prvImgData) {
 
- 					if (!(this.prvImgData = await this.fGetImgData().catch(() => {
 
- 							uni.showToast({
 
- 								title: "error_read",
 
- 								duration: 2000,
 
- 							})
 
- 						}))) return;
 
- 					this.target = new Uint8ClampedArray(this.prvImgData.length);
 
- 				}
 
- 				let data = this.prvImgData,
 
- 					target = this.target,
 
- 					i = e.detail.value,
 
- 					r, g, b, a, h, s, l, d, p, q, t, min, max, hK, tR, tG, tB;
 
- 				if (i === 0) {
 
- 					target = data;
 
- 				} else {
 
- 					i = (i + 100) / 200;
 
- 					if (i < 0.005) i = 0;
 
- 					if (i > 0.995) i = 1;
 
- 					for (let n = data.length - 1; n >= 0; n -= 4) {
 
- 						r = data[n - 3] / 255;
 
- 						g = data[n - 2] / 255;
 
- 						b = data[n - 1] / 255;
 
- 						max = Math.max(r, g, b);
 
- 						min = Math.min(r, g, b);
 
- 						d = max - min;
 
- 						if (max === min) {
 
- 							h = 0;
 
- 						} else if (max === r && g >= b) {
 
- 							h = 60 * ((g - b) / d);
 
- 						} else if (max === r && g < b) {
 
- 							h = 60 * ((g - b) / d) + 360;
 
- 						} else if (max === g) {
 
- 							h = 60 * ((b - r) / d) + 120;
 
- 						} else if (max === b) {
 
- 							h = 60 * ((r - g) / d) + 240;
 
- 						}
 
- 						l = (max + min) / 2;
 
- 						if (l === 0 || max === min) {
 
- 							s = 0;
 
- 						} else if (0 < l && l <= 0.5) {
 
- 							s = d / (2 * l);
 
- 						} else if (l > 0.5) {
 
- 							s = d / (2 - 2 * l);
 
- 						}
 
- 						data[n] && (a = data[n]);
 
- 						if (i < 0.5) {
 
- 							s = s * i / 0.5;
 
- 						} else if (i > 0.5) {
 
- 							s = 2 * s + 2 * i - (s * i / 0.5) - 1;
 
- 						}
 
- 						if (s === 0) {
 
- 							r = g = b = Math.round(l * 255);
 
- 						} else {
 
- 							if (l < 0.5) {
 
- 								q = l * (1 + s);
 
- 							} else if (l >= 0.5) {
 
- 								q = l + s - (l * s);
 
- 							}
 
- 							p = 2 * l - q;
 
- 							hK = h / 360;
 
- 							tR = hK + 1 / 3;
 
- 							tG = hK;
 
- 							tB = hK - 1 / 3;
 
- 							let correctRGB = (t) => {
 
- 								if (t < 0) {
 
- 									return t + 1.0;
 
- 								}
 
- 								if (t > 1) {
 
- 									return t - 1.0;
 
- 								}
 
- 								return t;
 
- 							};
 
- 							let createRGB = (t) => {
 
- 								if (t < (1 / 6)) {
 
- 									return p + ((q - p) * 6 * t);
 
- 								} else if (t >= (1 / 6) && t < (1 / 2)) {
 
- 									return q;
 
- 								} else if (t >= (1 / 2) && t < (2 / 3)) {
 
- 									return p + ((q - p) * 6 * ((2 / 3) - t));
 
- 								}
 
- 								return p;
 
- 							};
 
- 							r = tR = Math.round(createRGB(correctRGB(tR)) * 255);
 
- 							g = tG = Math.round(createRGB(correctRGB(tG)) * 255);
 
- 							b = tB = Math.round(createRGB(correctRGB(tB)) * 255);
 
- 						}
 
- 						a && (target[n] = a);
 
- 						target[n - 3] = r;
 
- 						target[n - 2] = g;
 
- 						target[n - 1] = b;
 
- 					}
 
- 				}
 
- 				let prvX = this.prvX,
 
- 					prvY = this.prvY,
 
- 					prvWidth = this.prvWidth,
 
- 					prvHeight = this.prvHeight;
 
- 				// #ifdef MP-ALIPAY
 
- 				this.ccp.putImageData({
 
- 					x: prvX,
 
- 					y: prvY,
 
- 					width: prvWidth,
 
- 					height: prvHeight,
 
- 					data: target,
 
- 					fail() {
 
- 						uni.showToast({
 
- 							title: 'error_put',
 
- 							duration: 2000
 
- 						})
 
- 					},
 
- 					complete() {
 
- 						uni.hideLoading();
 
- 					}
 
- 				}, this);
 
- 				// #endif
 
- 				// #ifndef MP-ALIPAY
 
- 				uni.canvasPutImageData({
 
- 					canvasId: 'prv-canvas',
 
- 					x: prvX,
 
- 					y: prvY,
 
- 					width: prvWidth,
 
- 					height: prvHeight,
 
- 					data: target,
 
- 					fail() {
 
- 						uni.showToast({
 
- 							title: 'error_put',
 
- 							duration: 2000
 
- 						})
 
- 					},
 
- 					complete() {
 
- 						uni.hideLoading();
 
- 					}
 
- 				}, this);
 
- 				// #endif
 
- 			},
 
- 			btop(base64) {
 
- 				this.base64 = base64;
 
- 				return new Promise(function(resolve, reject) {
 
- 					var arr = base64.split(','),
 
- 						mime = arr[0].match(/:(.*?);/)[1],
 
- 						bstr = atob(arr[1]),
 
- 						n = bstr.length,
 
- 						u8arr = new Uint8Array(n);
 
- 					while (n--) {
 
- 						u8arr[n] = bstr.charCodeAt(n);
 
- 					}
 
- 					return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([u8arr], {
 
- 						type: mime
 
- 					})));
 
- 				});
 
- 			},
 
- 		}
 
- 	}
 
- </script>
 
- <style>
 
- 	.my-canvas {
 
- 		display: flex;
 
- 		position: fixed !important;
 
- 		background: #000000;
 
- 		left: 0;
 
- 		z-index: 100000;
 
- 		width: 100%;
 
- 	}
 
- 	.my-avatar {
 
- 		width: 150upx;
 
- 		height: 150upx;
 
- 		width: 0upx;
 
- 		height: 0upx;
 
- 		border-radius: 100%;
 
- 	}
 
- 	.oper-canvas {
 
- 		display: flex;
 
- 		position: fixed !important;
 
- 		left: 0;
 
- 		z-index: 100001;
 
- 		width: 100%;
 
- 	}
 
- 	.prv-canvas {
 
- 		display: flex;
 
- 		position: fixed !important;
 
- 		background: #000000;
 
- 		left: 0;
 
- 		z-index: 200000;
 
- 		width: 100%;
 
- 	}
 
- 	.oper-wrapper {
 
- 		height: 50px;
 
- 		position: fixed !important;
 
- 		box-sizing: border-box;
 
- 		border: 1px solid #F1F1F1;
 
- 		background: #ffffff;
 
- 		width: 100%;
 
- 		left: 0;
 
- 		bottom: 0;
 
- 		z-index: 100009;
 
- 		flex-direction: row;
 
- 	}
 
- 	.oper {
 
- 		display: flex;
 
- 		flex-direction: column;
 
- 		justify-content: center;
 
- 		padding: 10upx 20upx;
 
- 		width: 100%;
 
- 		height: 100%;
 
- 		box-sizing: border-box;
 
- 		align-self: center;
 
- 	}
 
- 	.btn-wrapper {
 
- 		display: flex;
 
- 		flex-direction: row;
 
- 		/* #ifndef H5 */
 
- 		flex-grow: 1;
 
- 		/* #endif */
 
- 		/* #ifdef H5 */
 
- 		height: 50px;
 
- 		/* #endif */
 
- 		justify-content: space-between;
 
- 	}
 
- 	.btn-wrapper view {
 
- 		display: flex;
 
- 		align-items: center;
 
- 		justify-content: center;
 
- 		font-size: 16px;
 
- 		color: #333;
 
- 		border: 1px solid #f1f1f1;
 
- 		border-radius: 6%;
 
- 	}
 
- 	.hover {
 
- 		background: #f1f1f1;
 
- 		border-radius: 6%;
 
- 	}
 
- 	.clr-wrapper {
 
- 		display: flex;
 
- 		flex-direction: row;
 
- 		flex-grow: 1;
 
- 	}
 
- 	.clr-wrapper view {
 
- 		display: flex;
 
- 		align-items: center;
 
- 		justify-content: center;
 
- 		font-size: 16px;
 
- 		color: #333;
 
- 		border: 1px solid #f1f1f1;
 
- 		border-radius: 6%;
 
- 	}
 
- 	.my-slider {
 
- 		flex-grow: 1;
 
- 	}
 
- </style>
 
 
  |