전단 이미지 변환base64, 포맷 변환,blob, 업로드 총결산
1. 그림 파일 변환 base64 <input accept="image/gif,image/jpeg,image/jpg,image/png" type="file" id="up" />
$(function() {
$("#up").change(function() {
var file = this.files[0];
if(undefined == file){
return ;
}
r = new FileReader();
r.readAsDataURL(file);
r.onload = function(e) {
var base64 = e.target.result;
}
});
});
이렇게 하면 그림 파일의base64 인코딩을 얻을 수 있습니다
base64를 img의 src 속성에 직접 설정할 수 있으며, 그림으로 되돌려줍니다.
2. canvas 이미지 처리
2.1 canvas 그림 그리기 및 압축 이미지
var suofang = function(base64, bili, callback) {
console.log(" ,bili=" + bili);
// ,
var _img = new Image();
_img.src = base64;
_img.onload = function() {
var _canvas = document.createElement("canvas");
var w = this.width / bili;
var h = this.height / bili;
_canvas.setAttribute("width", w);
_canvas.setAttribute("height", h);
_canvas.getContext("2d").drawImage(this, 0, 0, w, h);
}
}
그림을 압축하는 것은 주로 긴 폭의 축소를 통해 그림을 축소하는 것이다
2.2 canvas base64
var base64 = canvas.toDataURL("image/png");
그림 품질의 설정을 위해 파라미터를 전달할 수 있습니다. 0-1
2.3 canvas 회전blob
_canvas.toBlob(function(blob) {
console.log(blob.size);
}, "image/jpeg");
2.4 base 회전blob
function dataURItoBlob(base64Data) {
var byteString;
if(base64Data.split(',')[0].indexOf('base64') >= 0)
byteString = atob(base64Data.split(',')[1]);
else
byteString = unescape(base64Data.split(',')[1]);
var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];
var ia = new Uint8Array(byteString.length);
for(var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ia], {
type: mimeString
});
}
3. 파일 업로드
1. base64 업로드
aax 요청을 사용할 수 있습니다. 일반 요청을 보내면 됩니다.
주의해야 할 것은base64가 비교적 길기 때문에 테스트 후 자바 백엔드에서 받아들인 매개 변수는null이다.그래서 JSON을 사용합니다.stringify () 데이터 데이터를 json으로 바꾸고 백엔드에서 @requestBody로 받습니다.
2. 블로그 업로드
var fd = new FormData();
fd.append("file", blob); //fileData
$.ajax({
type: "post",
url: "/file/upload",
async: true,
data: fd,
processData: false,
contentType: false,
success: function(r) {
}
});
마지막으로 전체 코드 첨부
<input accept="image/gif,image/jpeg,image/jpg,image/png" type="file" id="up" />
$(function() {
$("#up").change(function() {
var file = this.files[0];
if(undefined == file){
return ;
}
r = new FileReader();
r.readAsDataURL(file);
r.onload = function(e) {
var base64 = e.target.result;
}
});
});
2.1 canvas 그림 그리기 및 압축 이미지
var suofang = function(base64, bili, callback) {
console.log(" ,bili=" + bili);
// ,
var _img = new Image();
_img.src = base64;
_img.onload = function() {
var _canvas = document.createElement("canvas");
var w = this.width / bili;
var h = this.height / bili;
_canvas.setAttribute("width", w);
_canvas.setAttribute("height", h);
_canvas.getContext("2d").drawImage(this, 0, 0, w, h);
}
}
그림을 압축하는 것은 주로 긴 폭의 축소를 통해 그림을 축소하는 것이다
2.2 canvas base64
var base64 = canvas.toDataURL("image/png");
그림 품질의 설정을 위해 파라미터를 전달할 수 있습니다. 0-1
2.3 canvas 회전blob
_canvas.toBlob(function(blob) {
console.log(blob.size);
}, "image/jpeg");
2.4 base 회전blob
function dataURItoBlob(base64Data) {
var byteString;
if(base64Data.split(',')[0].indexOf('base64') >= 0)
byteString = atob(base64Data.split(',')[1]);
else
byteString = unescape(base64Data.split(',')[1]);
var mimeString = base64Data.split(',')[0].split(':')[1].split(';')[0];
var ia = new Uint8Array(byteString.length);
for(var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ia], {
type: mimeString
});
}
3. 파일 업로드
1. base64 업로드
aax 요청을 사용할 수 있습니다. 일반 요청을 보내면 됩니다.
주의해야 할 것은base64가 비교적 길기 때문에 테스트 후 자바 백엔드에서 받아들인 매개 변수는null이다.그래서 JSON을 사용합니다.stringify () 데이터 데이터를 json으로 바꾸고 백엔드에서 @requestBody로 받습니다.
2. 블로그 업로드
var fd = new FormData();
fd.append("file", blob); //fileData
$.ajax({
type: "post",
url: "/file/upload",
async: true,
data: fd,
processData: false,
contentType: false,
success: function(r) {
}
});
마지막으로 전체 코드 첨부
var fd = new FormData();
fd.append("file", blob); //fileData
$.ajax({
type: "post",
url: "/file/upload",
async: true,
data: fd,
processData: false,
contentType: false,
success: function(r) {
}
});
<input accept="image/gif,image/jpeg,image/jpg,image/png" type="file" id="up" />
$(function() {
$("#up").change(function() {
imageDeal(this, dealChange);
});
})
var dealChange = function(blob, base64) {
var fd = new FormData();
fd.append("file", blob); //fileData
$.ajax({
type: "post",
url: "/file/upload",
async: true,
data: fd,
processData: false,
contentType: false,
success: function(r) {
}
});
}
var imageDeal = function(ele, returnBase64) {
// file, base64
var file = ele.files[0]; //
if(undefined == file) { // , ,
return;
}
console.log("fileSize" + file.size);
console.log(file.type);
var r = new FileReader();
r.readAsDataURL(file);
r.onload = function(e) {
var base64 = e.target.result;
var bili = 1.5;
console.log(" :" + base64.length);
suofang(base64, bili, returnBase64);
}
}
var suofang = function(base64, bili, callback) {
console.log(" ,bili=" + bili);
// ,
var _img = new Image();
_img.src = base64;
_img.onload = function() {
var _canvas = document.createElement("canvas");
var w = this.width / bili;
var h = this.height / bili;
_canvas.setAttribute("width", w);
_canvas.setAttribute("height", h);
_canvas.getContext("2d").drawImage(this, 0, 0, w, h);
var base64 = _canvas.toDataURL("image/jpeg");
_canvas.toBlob(function(blob) {
console.log(blob.size);
if(blob.size > 1024*1024){
suofang(base64, bili, callback);
}else{
callback(blob, base64);
}
}, "image/jpeg");
}
}
다음으로 전송:https://www.cnblogs.com/ihuangjianxin/p/9405107.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.