2013-03-21 78 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

您已獲取data:scheme URI。您可以將其發佈到服務器,然後將其解碼爲二進制文件。 – Quentin 2013-03-21 16:03:40

+1

是的,你將不得不將blob發送回服務器作爲文本,你將無法用blob覆蓋文件上傳控制的值。 – Adrian 2013-03-21 16:29:56

回答

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 2013-03-21 19:21:56

相關問題