그림 을 압축 하여 base 64 문자열 로 변환 합 니 다.
18025 단어 js
/*
file: ( ),
w: , ,
objDiv:
photoCompress()
*/
function photoCompress(file,w,objDiv){
var ready=new FileReader();
/* Blob File . ,readyState DONE, onloadend , . ,result data: URL .*/
ready.readAsDataURL(file);
ready.onload=function(){
var re=this.result;
canvasDataURL(re,w,objDiv)
}
}
function canvasDataURL(path, obj, callback){
var img = new Image();
img.src = path;
img.onload = function(){
var that = this;
//
var w = that.width,
h = that.height,
scale = w / h;
w = obj.width || w;
h = obj.height || (w / scale);
var quality = 0.7; // 0.7
// canvas
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
//
var anw = document.createAttribute("width");
anw.nodeValue = w;
var anh = document.createAttribute("height");
anh.nodeValue = h;
canvas.setAttributeNode(anw);
canvas.setAttributeNode(anh);
ctx.drawImage(that, 0, 0, w, h);
//
if(obj.quality && obj.quality <= 1 && obj.quality > 0){
quality = obj.quality;
}
// quality ,
var base64 = canvas.toDataURL('image/jpeg', quality);
// base64
callback(base64);
}
}
/**
* base64 url Blob
* @param urlData url base64
*/
function convertBase64UrlToBlob(urlData){
var arr = urlData.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});
}
사용 예시
<input type="file" id="file" @change="changepic()" style="width:200px" class="form-control" v-model="imageFile"/>
<img src="" id="previewsImg" width="200">
var pic = $('#file')[0].files[0];
if(pic.size/1024 > 100){
// 100k,
//
photoCompress(pic, {
quality: 0.2
}, function(base64Codes){
//
//base64Codes base64
// base64 Blob
var bl = convertBase64UrlToBlob(base64Codes);
//fd.append("imageFile", bl, "file_"+Date.parse(new Date())+".jpg"); //
//vm.uploading(fd);
});
}
그림 미리 보기
changepic: function() {
var reads= new FileReader();
f=document.getElementById('file').files[0];
if(f == undefined || f == ''){
return;
}
reads.readAsDataURL(f);
reads.onload=function (e) {
document.getElementById('previewsImg').src=this.result;
};
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.