2015-11-10 2 views
0

Вот наша реализация изменения размера jpeg на стороне клиента до фиксированного размера 1024 или 768. Сценарий работы заключается в том, что пользователь выбирает изображение (исходное изображение) она хочет загрузить (без отображения). Если размер исходного изображения больше 1024 или 768, измените размер изображения пропорционально. Приведенный ниже код вычисляет ширину и высоту должно быть и выполняет изменение размера.Реализация jpeg-изображения с размером javascript с фиксированным размером

Есть 2 alert(), чтобы показать размер изображения до и после изменения размера. Мы обнаружили, что размер файла не уменьшается. Что может быть неправильным с кодом?

$(function(){ 
    $('#uploaded_file_file_for_upload').change(function(){ 
     var _URL = window.URL || window.webkitURL; 
     var img, img_width = 0, img_height = 0, max_width = 1024, max_height = 768; 
     var f = $(this)[0].files[0]; 
     alert(f.size); 
     if (f.type == 'image/jpeg' || f.type == 'image/jpg') { 
      img = new Image(); 
      img.onload = function() { 
       img_width = this.width; 
       img_height = this.height; 
      }; 
      img.src = _URL.createObjectURL(f); 
      if (img_width > max_width){ 
       img_height = Math.ceil(img_height * max_width/img_width); 
       img_width = max_width; 
      } else if (img_height > max_height) { 
       img_width = Math.ceil(img_width * max_height/img_height); 
       img_height = max_height; 
      }; 
      resize(img, img_width, img_height); 
      var f1 = $(this)[0].files[0]; 
      alert(f1.size); 
     }; 

     function resize(image, width, height) { 
      var mainCanvas = document.createElement("canvas"); 
      mainCanvas.width = width; 
      mainCanvas.height = height; 
      var ctx = mainCanvas.getContext("2d"); 
      ctx.drawImage(image, 0, 0, width, height); 
      $('#uploaded_file_file_for_upload').attr('src', mainCanvas.toDataURL("image/jpeg")); 
     }; 

     return false; 

    }); 
}); 
+0

После отладки, мы убедились, что изображение изменения размера работ. Проблема может быть уменьшена до привязки измененного изображения к элементу #uploaded_file_file_for_upload, который является кодовой строкой $ ('# uploaded_file_file_for_upload'). Attr ('src', mainCanvas.toDataURL ("image/jpeg")); – user938363

ответ

0

Проверьте naturalWidth из образа вместо CSS width

+0

Нет проблемы с шириной изображения. – user938363

+0

Пожалуйста, подумайте над редактированием сообщения, чтобы добавить больше объяснений о том, что делает ваш код, и почему он решит проблему. Ответ, который в основном содержит только код (даже если он работает), обычно не помогает OP понять их проблему. Также рекомендуется, чтобы вы не отправляли ответ, если это всего лишь предположение. Хороший ответ будет иметь правдоподобную причину, почему он может решить проблему OP. – Drenmi

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