2015-09-19 124 views
1

我有一个将图像转换为base64字符串的web应用程序。将它传递给WCF服务,并且serivce方法会将该字符串转换回png图像。将base64字符串转换为wcf服务中的图像c#

客户机端(转换图像至基础64)

public static string ImageToBase64(string path) 
{ 
    using (Image image = Image.FromFile(path)) 
    { 
     using (MemoryStream m = new MemoryStream()) 
     { 
      image.Save(m, image.RawFormat); 
      byte[] imageBytes = m.ToArray(); 

      // Convert byte[] to Base64 String 
      string base64String = Convert.ToBase64String(imageBytes); 
      return base64String; 
     } 
    } 
} 

WCF Serive方法

CommonDataManager.Base64ToImage(designImage).Save(designQuotePath + "/" + "Request_Quote_" + objQuote.Customer_Id.ToString(), ImageFormat.Png); 

public static Image Base64ToImage(string base64String) 
{ 
    Image image = null; 
    try 
    {     
     byte[] imageBytes = System.Convert.FromBase64String(base64String); 
     using (MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length)) 
     {      
      image = Image.FromStream(ms, true); 
     }     
    } 
    catch (Exception ex) 
    { 
     LogManager.LogException(ex, "Base64ToImage"); 
    } 
    return image; 
} 

问题:

  • 这是给输出作为正常的文件不.png文件。
  • 在将base64字符串发送到wcf服务方法作为参数之前是否有任何特殊的事情需要检查?

在此先感谢。

+0

什么是_normal_文件?你有没有尝试添加文件扩展名? –

+0

@RomanDibikhin是的,当我给扩展名为'.png'它的工作原理。那么为什么不从代码? – Shaggy

+1

MSDN有一个例子显示你需要手动添加扩展。 [这里](https://msdn.microsoft.com/en-us/library/9t4syfhh(V = vs.110)的.aspx) –

回答

0

您需要添加扩展名。更新此:

CommonDataManager.Base64ToImage(designImage).Save(designQuotePath + "/" + 
"Request_Quote_" + objQuote.Customer_Id.ToString(), ImageFormat.Png); 

CommonDataManager.Base64ToImage(designImage).Save(designQuotePath + "/" + 
"Request_Quote_" + objQuote.Customer_Id.ToString() + ".png", ImageFormat.Png); 
相关问题