메뉴 건너뛰기

조회 수 36370 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

이미지 뷰어형태로 당장 올릴 이미지를 미리보기형태로 작은모습으로 보여주는 기능을 만들고 있었는데, 스마트폰에서 찍은 사진을 테스트하다 보면 자동으로 회전되어 보이는 현상이 있었습니다.

 

 

감자♥ 정상적으로 나옵니다.

 

 

 

 

꼬미♥ 꼬미야 왜 돌아갔니...

 

 

업로드 하고 페이지에 노출하는 형태라면 서버단에서 저장할 때, 처리하면 되지만 업로드 뷰어의 경우에는 스크립트단에서 해결이 필요하였습니다.

 

위 github에서 라이브러리를 받을 수 있습니다.

 

EXIF 

디지털 카메라와 스마트폰등에서 이미지 등의 정보를 기록할 수 있습니다.

해당 메타정보 중에 회전 방향 옵션을 받아올 수 있는데 이 회전 방향값인 orientation을 추출하고 처리하여 강제로 고정시키는 방식입니다.

단순하게 업로드 한 데이터에서는 회전정보를 알 수가 없다보니 blob을 통해 바이너리 데이터로 변환하여 데이터를 확인하는 절차를 따른다고 합니다.

 

Load-Image

html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"
    integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="./load_image/load-image.all.min.js"></script>
<body>
    <input type="file" id="upload">
    <img src="" alt="" id="preview" style="width:300px;height:300px;">
</body>

</html>

 

javascript

$(function () {
    $("#upload").on("change", function (e) {
        var files = e.target.files;
        var fileType = files[0].type;
        var limg = loadImage(files[0], function (img, data) {
            img.toBlob(function (blob) {
                var rotateFile = new File([blob], files[0].name, { type: fileType });
                var reader = new FileReader();
                reader.onload = function (e) { $("#preview").attr("src", e.target.result); }

                reader.readAsDataURL(rotateFile);
            }, fileType)
        }, { orientation: 1 });
    });
})

file 태그에 이미지가 올라가면 change이벤트에 의해 파일 정보를 받아오고 라이브러리 함수 loadImage를 통해 데이터를 blob으로 읽고 image태그에 처리를 해줍니다.

 

여기서 포인트는 2번째 파라미터 object값에 orientation값을 1로 해주면 세로 이미지로 볼 수 있었습니다.

여기서 값을 2로 처리하시면 좌우 반전되어 나오는 것을 볼 수 있습니다.

 

 

처리 동작 후 미리보기 이미지가 정상적인 회전으로 나옵니다.

 


  1. No Image 01Mar
    by
    2014/03/01 Views 5855 

    iframe 높이 자동으로 잡아주기

  2. No Image 27Feb
    by
    2014/02/27 Views 6206 

    iframe 아이프레임 내용 길이에 따라서 높이가 자동으로 조절 되도록

  3. No Image 01Mar
    by
    2014/03/01 Views 5992 

    iframe 자동 리사이즈

  4. No Image 19Jun
    by
    2015/06/19 Views 6958 

    iframe사용시 높이 자동 조절

  5. No Image 01Mar
    by
    2014/03/01 Views 5933 

    iframe을 리로드 하자!

  6. No Image 11Sep
    by
    2016/09/11 Views 5562 

    input radio 체크유무 검사

  7. No Image 01Mar
    by
    2014/03/01 Views 5469 

    input type checkbox 체크했는지 검사하는 소스

  8. input type file multiple list (파일 업로드 리스트 확인)

  9. No Image 27Feb
    by
    2014/02/27 Views 5455 

    input 박스에서 유용한 자바 스크립트

  10. No Image 01Mar
    by
    2014/03/01 Views 6271 

    input 빈칸 체크

  11. No Image 16Jan
    by
    2019/01/16 Views 1104 

    input 태그에서 name과 id의 차이

  12. No Image 01Mar
    by
    2014/03/01 Views 6077 

    input 테그안의 숫자 3자리 마다 콤마 찍기

  13. No Image 01Mar
    by
    2014/03/01 Views 5356 

    input에 background-image 이벤트

  14. No Image 09Mar
    by
    2021/03/09 Views 513 

    Javascript - Calendar 달력 생성하고 제어하기

  15. No Image 09Mar
    by
    2021/03/09 Views 268 

    Javascript - form태그 내부 ajax처리시 2번 전송되는 현상

  16. Javascript - Free SVG 한국맵 제어 처리

  17. javascript - vanillaJS로 체크박스(checkbox) 제어하기

  18. Javascript - 사업자 등록번호 유효성 체크

  19. No Image 09Mar
    by
    2021/03/09 Views 729 

    Javascript - 유효성 체크(이메일 정규식, IP 정규식, 비밀번호 등)

  20. Javascript - 이미지 미리보기 회전되어 나옴(EXIF)

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved