这个是在网上找的一个BitmapImage到数组的转换方法
  public static byte[] BitmapImageToByteArray(BitmapImage bmp)
   {
   byte[] byteArray = null;   try
   {
   Stream sMarket = bmp.StreamSource;   if (sMarket != null && sMarket.Length > 0)
   {
   //很重要,因为Position经常位于Stream的末尾,导致下面读取到的长度为0。  
  sMarket.Position = 0;   using (BinaryReader br = new BinaryReader(sMarket))
   {
   byteArray = br.ReadBytes((int)sMarket.Length);
   }
   }
   }
   catch
   {
   //other exception handling  
  }   return byteArray;
   }
我是这样调用的:
BitmapImage btm = new BitmapImage(new Uri("D:\\1.bmp"));
byte[] br = BitmapImageToByteArray(btm);
跟踪发现btm中只有路径D:\\1.bmp,而没有图像数据
求正确的解决

解决方案 »

  1.   

      /// < summary>  
            /// 将文件转换成流  
            /// < /summary>  
            /// < param name="fileName">文件全路径< /param>  
            /// < returns>< /returns>  
            public static byte[] SetImageToByteArray(string fileName)
            {
                byte[] image = null;
                try
                {
                    FileStream fs = new FileStream(fileName, FileMode.Open);
                    FileInfo fileInfo = new FileInfo(fileName);
                    int streamLength = (int)fs.Length;
                    image = new byte[streamLength];
                    fs.Read(image, 0, streamLength);
                    fs.Close();
                    return image;
                }
                catch(Exception ex)
                {
                    LogFile.writeLog(ex.ToString());
                    return image;
                }
            }
            /// < summary>  
            /// 将byte转换成Image文件  
            /// < /summary>  
            /// < param name="mybyte">byte[]变量< /param>  
            /// < returns>< /returns>  
            public static System.Drawing.Image SetByteToImage(byte[] mybyte)
            {
                System.Drawing.Image image;
                MemoryStream mymemorystream = new MemoryStream(mybyte, 0, mybyte.Length);
                image = System.Drawing.Image.FromStream(mymemorystream);
                return image;
            }