Uniapp 上傳 base64 圖片

                                                  Uniapp 上傳 base64  圖片


之前通過 純 vue 項目做過類似,功能 但是發現在 Uniapp for App 端 不好使!又看了 別人的代碼; 又只能在 微信小程序 中跑;

經過爬坑: 功能實現 在此記錄下過程:

好多 人用  uni.getFileSystemManager() :但是不能在 APP 和 H5 中使用;

 

正解:

//選擇圖片
onSelect() {
	 
	uni.chooseImage({
		count: 1,
		sizeType: ['original', 'compressed'],
		sourceType: ['album'],
		success: function(res) {
			console.log('res.tempFilePaths:', res.tempFilePaths);
			detailImage( res.tempFilePaths[0], (data)=>{
                            //base64 圖片內容就是  data
                        })
		}.bind(this)
	});
},

detailImage(path, callback) {
	// #ifdef APP-PLUS
	plus.io.resolveLocalFileSystemURL(path, function(entry) {
		entry.file(function(file) {
			var fileReader = new plus.io.FileReader();
			//alert("getFile:" + JSON.stringify(file));
			fileReader.readAsDataURL(file);
			fileReader.onloadend = function(evt) {
				// console.log(JSON.stringify(evt.target.result)); ////base64字符串  
				callback(evt.target.result);
			}
		})
	})
	// #endif


	// #ifdef H5
	var img = new Image();
	img.src = path;
	img.onload = function() {
		//默認按比例壓縮
		var w = this.width,
			h = this.height;
		var quality = 0.95; // 默認圖片質量爲0.7

		//生成canvas
		var canvas = document.createElement('canvas');
		var ctx = canvas.getContext('2d');

		// 創建屬性節點
		canvas.setAttribute("width", w);
		canvas.setAttribute("height", h);

		ctx.drawImage(this, 0, 0, w, h);
		// quality值越小,所繪製出的圖像越模糊
		var base64 = canvas.toDataURL('image/jpeg', quality);
		// 回調函數返回base64的值
		callback(base64);
	};
	// #endif
}
  • 這裏 區分下  APP 和 H5 就可以了
  • 獲取到 base64 圖片內容之後 上傳就可以了; 這個base64 是在文件頭的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章