2013-03-21 8 views
4

Я пытаюсь изменить размер изображения при загрузке файла перед загрузкой изображения на сервер. Я нашел decent plugin, который возвращает blob обновленного изображения, однако я не могу найти, как назначить blob обратно файловому объекту, который используется при загрузке.Изменение размера изображения перед загрузкой в ​​HTML 5

блоб выглядит следующим образом: данные: изображение/JPEG; base64,/9J/4AAQSkZJRgABAQAAAQAB .....

 var file = e.target.files[0]; 
     canvasResize(file, { 
      width: 300, 
      height: 0, 
      crop: false, 
      quality: 80, 
      //rotate: 90, 
      callback: function (data, width, height) { 
       // How to assign the data blob back to the file? 
       //$(file).attr('src', data); 

      // THEN submit with the smaller photo 
      $('#PhotoForm').ajaxSubmit(options); 
      } 
     }); 

Спасибо!

+5

У вас есть данные: URI схемы. Вы могли бы просто опубликовать это на сервере, а затем декодировать его обратно в двоичный файл. – Quentin

+1

Да, вам придется отправить blob обратно на сервер в виде текста, вы не сможете перезаписать значение элемента управления загрузкой файла блобом. – Adrian

ответ

0

Если вы остаетесь застрявшим с canvasResize, существует множество других библиотек, управляющих изображениями. Раньше я использовал Pixastic, но имел большие накладные расходы, чем canvasResize. Это better documented.

0

Я закончил тем, что просто добавил blob в скрытое поле в форме и отправил его. Сохранение того, что в качестве изображения из C# было выполнено с помощью:

 var regex = new Regex(@"data:(?<mime>[\w/]+);(?<encoding>\w+),(?<data>.*)", RegexOptions.Compiled); 
     var match = regex.Match(input.ImageBlob); 
     var mime = match.Groups["mime"].Value; 
     var encoding = match.Groups["encoding"].Value; 
     var data = match.Groups["data"].Value; 
     byte[] imagedata = Convert.FromBase64String(data); 

     Image img = byteArrayToImage(imagedata); 

     img.Save("someimagename.jpg"); 
+0

Этот код позволяет получить правильное расширение для имени изображения из типа mime, если необходимо: http://cyotek.com/blog/mime-types-and-file-extensions – user1854458