로컬에서 이미지 압축 후 업로드하는 자바스크립트 플러그인 localResizeIMG 사용법

예제 코드

/**
 * 로컬 이미지 압축 후 업로드 기능
 */
$("#imageInput").change(function(){
    var currentElement = $(this);
    lrz(this.files[0],{width: 1024,quality :0.7,fieldName:'imageFile'}).then(function(result) {
return uploadFile(currentElement.get(0) , result.formData);
    }).then(function(response) {
        // response => 업로드 성공 후 반환되는 JSON 데이터
        // TODO:: 처리 로직 구현
    }).catch(function(error) {
        console.log(error);
    });
});

/**
 * 원본 이미지 직접 업로드
 */
$("#imageInput").change(function(){
    uploadFile(this).then(function(response) {
        // response => 업로드 성공 후 반환되는 JSON 데이터
        // TODO:: 처리 로직 구현
    }).catch(function(error) {
        console.log(error);
    });
});


/**
 * 이미지 업로드 - 백엔드에서 정상적으로 이미지 처리 가능<input file="imageFile" name="imageFile" />
 * @param selector 파일 입력 필드 DOM 객체 [필수]
 * @param formData 파일 업로드용 FormData [선택]
 */
function uploadFile(selector , formData) {
    if(!formData) {
        formData = new FormData();
        formData.append("imageFile", $(selector)[0].files[0]);
    }

    var uploadUrl = "{:U('Wap/Public/ajaxSingleUpload')}";
    return new Promise(function(resolve,reject){
        $.ajax({
            url : uploadUrl,
            type : 'POST',
            data : formData,
            processData : false,
            contentType : false,
            dataType:"json",
            success : function(serverResponse) {
                resolve(serverResponse);
            },
            error : function(serverResponse) {
                reject(serverResponse);
            }
        });
    });
}</em>

매개변수 설명:

매개변수
lrz(file, [options]);
file input:file로 얻은 파일 또는 직접 이미지 경로
[options] 이 매개변수는 생략 가능
width {Number} 이미지의 최대 너비, 기본값은 원본 너비이며 높이를 지정하지 않으면 너비에 맞게 조정됨
height {Number} 위와 동일
quality {Number} 이미지 압축 품질, 값 범위 0 - 1, 기본값 0.7
fieldName {String} 백엔드에서 받을 필드 이름, 기본값: file

반환 결과

반환값은 promise 객체

then(rst)

rst.formData 백엔드에서 처리할 수 있는 데이터
rst.file 압축된 파일 객체 (기본값으로 rst.formData에 이미 포함됨), 압축률이 너무 낮은 경우 원본 파일 객체가 될 수 있음
rst.fileLen 생성된 이미지 크기, 백엔드는 이 값으로 전송이 완전한지 확인 가능
rst.base64 생성된 이미지의 base64, 백엔드는 이 문자열을 이미지로 처리하거나 img.src = base64로 직접 사용 가능
rst.base64Len 생성된 base64의 크기, 백엔드는 이 값으로 전송이 완전한지 확인 가능 (base64 업로드 방식 사용 시)
rst.origin 원본 파일 객체로, 원본 파일의 크기, 날짜 등의 정보가 저장됨
catch(err)

always()

리소스 다운로드 주소:https://github.com/think2011/localResizeIMG

하나의 파일만 참조하면 됨

<script src="./dist/lrz.bundle.js"></script>

보충 자료

FormData 객체 매개변수 및 메소드 정보: https://developer.mozilla.org/en-US/docs/Web/API/FormData

예제:FormData.get('key');//key 값으로 해당 데이터 가져오기

태그: JavaScript 이미지 압축 파일 업로드 localResizeIMG FormData

9월 24일 12:22에 게시됨