圖片裁剪並上傳到阿里雲oss
此案例需要基於我前面兩遍文章的程式碼,建議先行閱讀。
阿里雲OSS圖片上傳(java web直傳)https://blog.csdn.net/u011628753/article/details/110876234
前端圖片裁剪並上傳到七牛雲kodo https://blog.csdn.net/u011628753/article/details/110877703
邏輯思想
將dataUrl(base64)轉換為file物件,利用uploader.addFile新增file檔案,然後再上傳檔案。(dataUrl是已經裁剪好的檔案)
需要呼叫的js
function getInfo(event){
let reader = new FileReader();
//這裡把一個檔案用base64編碼
reader.readAsDataURL(event.target.files[0]);
reader.onload = function(e){
let newImg = new Image();
//獲取編碼後的值,也可以用this.result獲取
newImg.src = e.target.result;
newImg.onload = function () {
/* 獲取 this.height tthis.width*/
var dataURL = compress(newImg,this.width,this.height,0.8);
/*為了相容ios 需要 dataURL-> blob -> file */
var blob = dataURLtoBlob(dataURL); // dataURL-> blob
var file = blobToFile(blob, '999'); // blob -> file
console.log("得到檔案:"+file);
console.log("壓縮後大小:"+file.size/1024);
$("body").append("<img src='" + dataURL + "' />");
}
}
}
function compress(img, width, height, ratio) { // img可以是dataURL或者圖片url
/* 如果寬度大於 750 圖片太大 等比壓縮 */
if(width > 750){
var ratio = width/height;
width = 750;
height = 750/ratio;
}
var canvas, ctx, img64;
canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);
/* canvas.toDataURL(mimeType(圖片的型別), qualityArgument(圖片質量)) */
img64 = canvas.toDataURL("image/jpeg", ratio);
return img64; // 壓縮後的base64串
}
//將base64轉換為blob
function dataURLtoBlob (dataurl) {
var arr = dataurl.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 new Blob([u8arr], { type: mime });
}
//將blob轉換為file
function blobToFile(theBlob, fileName){
theBlob.lastModifiedDate = new Date();
theBlob.name = fileName;
return theBlob;
}
相關文章
- Flutter 上傳圖片到阿里雲OSSFlutter阿里
- vue 圖片上傳到阿里雲ossVue阿里
- 小程式上傳圖片到阿里雲oss阿里
- Android圖片上傳到阿里雲OSS小案例Android阿里
- 微信小程式開發:上傳網路圖片到阿里雲oss微信小程式阿里
- Vue圖片裁剪上傳元件Vue元件
- 圖片裁剪上傳示例(node + react)React
- 前端使用 JS 上傳圖片至阿里雲 ali-oss前端JS阿里
- 【故障公告】阿里雲OSS故障造成圖片無法上傳阿里
- 易優CMS阿里雲OSS上傳圖片報錯-eyoucms阿里
- 使用 HTML5 Canvas 實現圓形圖片裁剪並上傳HTMLCanvas
- windows下使用mysqldump備份資料庫並上傳到阿里雲OSSWindowsMySql資料庫阿里
- ueditor jsp版上傳圖片到阿里雲JS阿里
- Java實現圖片上傳到伺服器,並把上傳的圖片讀取出來Java伺服器
- Laravel- 圖片上傳新增自動裁剪功能Laravel
- vue 上傳圖片到阿里雲(前端直傳:不推薦)Vue阿里前端
- Retrofit+RxJava上傳圖片上傳圖片到後臺RxJava
- 前端(react)上傳到阿里雲OSS儲存 例項前端React阿里
- android 阿里雲oss上傳Android阿里
- jquery阿里雲oss 分片上傳jQuery阿里
- 基於cropper.js的圖片上傳和裁剪JS
- 小程式踩坑記錄-上傳圖片及canvas裁剪圖片後上傳至伺服器Canvas伺服器
- web技術分享| 圖片上傳與圖片裁剪結合 vue3WebVue
- ionic3 上傳圖片、壓縮圖片到阿里雲 服務端簽名後直傳阿里服務端
- js上傳多個檔案到asp.net core,並實時轉存到阿里雲ossJSASP.NET阿里
- Android 拍照、選擇圖片並裁剪Android
- javauploadify上傳圖片並預覽Java
- 阿里雲CDN+OSS完成圖片加速阿里
- 百度編輯器 ueditor 上傳圖片影片到阿里 Oss 或其他雲 PHP阿里PHP
- 如何使用FormData上傳壓縮裁剪後的圖片Blob物件ORM物件
- 阿里雲 oss 檔案上傳 小坑阿里
- 安卓上傳圖片到伺服器並儲存到電腦本地安卓伺服器
- java,springboot + thymeleaf 上傳圖片、刪除圖片到伺服器、本地,壓縮圖片上傳(有些圖片會失真),原圖上傳JavaSpring Boot伺服器
- 利用vue-cropper剪裁圖片並上傳Vue
- Laravel 上傳圖片到七牛雲Laravel
- Retrofit2.0:上傳圖片到PHPPHP
- 百度編輯器 ueditor 上傳圖片視訊到阿里 Oss 或其他雲 PHP阿里PHP
- flutter直接上傳檔案到阿里雲ossFlutter阿里