2017-10-09 29 views
0

我想創建一個API,將保存圖像在給定的位置。保存從字節的圖像

下面是我爲

Image image = Image.FromFile(@"C:\Users\abc\Desktop\img-logo.jpg"); 
       byte[] bytes = (byte[])(new ImageConverter()).ConvertTo(image, typeof(byte[])); 
       string str = Convert.ToBase64String(bytes); 
       Save_Application_Image("12004", str); 

代碼和API的方法

public void Save_Application_Image(string staffCode , string bytearray) 
    { 
     try 
     { 
      byte[] bytes = Convert.FromBase64String(bytearray); 
      file_path = "~/uploads/" + file_name; 
      FileStream file = File.Create(HttpContext.Current.Server.MapPath(file_path)); 
      file.Write(bytes, 0, bytes.Length); 
      file.Close(); 
     } 
     catch(Exception ex) 
     { 
      logger.LogError(ex); 
     } 
     finally 
     { 
     } 
    } 

這個API必須從Android應用程序調用,所以我會收到兩個字符串參數。

它完美保存文件,但文件不可讀。沒有預覽圖像文件。

這是什麼方法?

+1

(或者甚至可能更好,'Base64'?Web API也可以自動接收'byte []',所以甚至不需要轉換爲字符串 –

+0

親愛的@CamiloTerevinto,這不是問題,問題是將它寫入應該可讀的文件中。我已經更新了我的問題和你的建議 – Jack

+0

圖像不可讀,因爲最終結果與初始數據不完全相同,這就是爲什麼我建議更改en編碼 –

回答

0

我不確定如何ImageConverter的作品,但我用這個之前Image秒值進行轉換,以byte[]:你爲什麼要使用,而不是``UTF8` ASCII`

Image image = Image.FromFile(@"C:\Users\abc\Desktop\img-logo.jpg"); 
using (var stream = new MemoryStream()) 
{ 
    image.Save(stream); 
    string savedImage = Convert.ToBase64String(stream.ToArray()); 
    Save_Application_Image("12004", str); 
}