在没有System.Drawing

时间:2017-09-19 15:41:21

标签: c# asp.net azure system.drawing

我需要在不使用System.Drawing的情况下将wmf文件转换为字节数组。我无法使用System.Drawing的原因是Azure环境中不支持GDI +的某些功能。代码将在本地环境中执行,但在部署到服务器时将无法运行。我必须将我们应用程序之外的调整大小逻辑移动到Azure VM才能使用GDI +。我们必须支持遗留应用程序的wmf文件。

部署到Azure Web应用程序时,以下内容将失败。

byte[] imgArr;
using (var ms = new MemoryStream())
{
    sourceImage.Save(ms, ImageFormat.Png);
    imgArr = ms.ToArray();
}

var imgCon = new ImageConverter();
var imgArr = (byte[])imgCon.ConvertTo(sourceImage, typeof(byte[]));

两者都使用System.Drawing库并使用GDI +。有没有其他方法可以将Windows图元文件转换为字节数组?

1 个答案:

答案 0 :(得分:0)

请尝试使用以下代码,它适用于我。

   FileInfo fileInfo = new FileInfo(path); // the path should be accessed in the azure portal

   // The byte[] to save the imgArr in
   byte[] imgArr= new byte[fileInfo.Length];

   // Load a filestream and put its content into the byte[]

   using (FileStream fs = fileInfo.OpenRead())
   {
       fs.Read(imgArr, 0, imgArr.Length);
   }