2017-10-09 31 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); 
}