2016-08-26 5 views
1

Я получил эту функцию javascript, которая просматривает входное изображение (с исходным размером) в поле ввода.Javascript нижнее разрешение ввода предварительного просмотра изображения

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

Да, он изменит res на отображаемом изображении, но он все равно загрузит полное изображение (в КБ). – 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: не могу прочитать свойство 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, да ... это сделает img с id = "blah" в соответствии с HTML в ответе для отображения изображения с разрешением 300x300 пикселей. Вы можете изменить разрешение так, как хотите. Вы попробовали? – 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

Смежные вопросы