2016-08-26 1 views
1

입력 필드에 입력 이미지 (원본 크기)를 미리 보는이 자바 스크립트 기능이 있습니다.자바 스크립트 입력 해상도 미리보기 이미지의 낮은 해상도

function readURL(input) { 
    if (input.files && input.files[0]) { 
     var reader = new FileReader(); 

     reader.onload = function (e) { 
      $('#blah').attr('src', e.target.result); 
     } 
     reader.readAsDataURL(input.files[0]); 
    } 

    $("#imgInp").change(function(){ 
     readURL(this); 
    }); 
} 

및 관련 HTML :

<form id="form1" runat="server"> 
    <input type='file' id="imgInp" /> 
    <img id="blah" src="#" alt="your image" /> 
</form> 

나는이 대답에서 코드를 가지고 : Preview an image before it is uploaded

내 질문은 경우와는 미리보기 이미지의 해상도를 변경할 수 있습니다 방법, 미리보기 이미지의 해상도 만 바꾸고 싶습니다.

아이디어가 있으십니까?

+0

너는 img 태그에 너비와 높이를 추가하려고 했습니까? – KungWaz

+0

@KungWaz는 이전 해상도를 변경합니까? – utdev

+0

예, 표시된 이미지의 해상도는 변경되지만 전체 이미지 (KB)는 여전히로드됩니다. – KungWaz

답변

0

drawing that in canvas으로 이미지를 미리 볼 수도 있습니다. 캔버스에서 그림을 그리는 동안 사용자 지정 해상도를 지정할 수 있습니다. 그

function readURL(input) { 
 

 
    if (input.files && input.files[0]) { 
 
     var reader = new FileReader(); 
 

 
     reader.onload = function (e) { 
 
      $('#blah').attr('src', e.target.result); 
 
      var ctx = $('#myCanvas')[0].getContext("2d"); 
 
      ctx.drawImage($('#blah')[0], 0, 0, 240, 297); 
 
     } 
 

 
     reader.readAsDataURL(input.files[0]); 
 
    } 
 
} 
 

 
$("#imgInp").change(function(){ 
 
    readURL(this); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="form1" runat="server"> 
 
    <input type='file' id="imgInp" /> 
 
    <img id="blah" style="display:none;" /> 
 
    <canvas id="myCanvas" width="240" height="297"></canvas> 
 
</form>

+0

캔버스에 그리기 전에'$ ('# blah) [0]'이 (가)로드 될 때까지 기다려야합니다. – Kaiido

+0

이 오류는 다음과 같습니다. 'Uncaught TypeError :이 줄에서 undefined의 getContext'속성을 읽을 수 없습니다. var ctx = $ ('# myCanvas') [0] .getContext ("2d"); ' – utdev

+0

nevermind가 오류를 해결했습니다. – utdev

0

같은 무언가가 당신의 IMG을 변경하고 너비를 추가 및/또는 높이가 원하는 크기의 예에 해상도를 수축 속성 :

<form id="form1" runat="server"> 
    <input type='file' id="imgInp" /> 
    <img id="blah" src="#" alt="your image" width="300" height="300" /> <!-- Change the width and height accordingly. --> 
</form> 
+0

미리보기 된 해상도가 변경됩니까? – utdev

+0

@ JohnDoe2, yes ... 그러면 300x300 픽셀 이미지를 표시하는 HTML에서 ID = "blah"인 img가됩니다. 해상도를 원하는대로 변경할 수 있습니다. 시도해 봤어? – Morgs

+0

나는 내가 몇 번 시도해보고 고맙다는 응답을 주겠다. 감사합니다. – utdev

0
function readURL(input) { 
    if (input.files && input.files[0]) { 
    var reader = new FileReader(); 

    reader.onload = function (e) { 
     var image = new Image(); 
     image.src = e.target.result; 

     image.onload = function() { 
     // access image size here 
     var aspectRatio = this.width/this.height, 
      thumbWidth = 100, 
      thumbHeight = aspectRatio * thumbWidth; 

     $('#blah').attr('src', this.src); 
     $('#blah').attr('width', thumbWidth); 
     $('#blah').attr('height', thumbHeight); 
     }; 
    }; 
    reader.readAsDataURL(input.files[0]); 
    } 

    $("#imgInp").change(function(){ 
    readURL(this); 
    }); 
} 

이 힘 이미지를 작게 만들 때 이미지의 종횡비를 유지하십시오. 폭을 원하는대로 변경하십시오.

+0

제안 해 주셔서 감사합니다. 그러나 이미지의 크기는 변하지 만 해상도는 더 낮아 지지만, 축소해도 여전히 확대됩니다. 해상도가 변경되지 않은 것처럼 보입니다. – utdev

+0

그렇다면 이미지의 해상도를 마술처럼 바꿀 수 없기 때문에 내가하고 싶은 것을 이해할 수 없다고 생각합니다. – KungWaz