200分求---C# 转换Gif图片问题.
目前项目中用到,上传图片后,如果是gif的图片则转换为jpg格式存储在数据库中(存的是byte[]的)。   以下是我的代码,始终得不到期望数据. 
 说明:ObjectStream   是保证正确的图片流.以下代码获取的都是同一个ObjectStream.   
 1. 
 (这样出来的jpg是正确的,没问题) 
 Image   myImg   =Image.FromStream(ObjectStream); 
 myImg.Save(@ "D:\\13.jpg ",System.Drawing.Imaging.ImageFormat.Jpeg); 
 ----------------------------- 
 //以下代码,读出来的FileByte全部为0). 
 Image   myImg   =Image.FromStream(ObjectStream); 
 MemoryStream   ms   =   new   MemoryStream(); 
 myImg.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); 
 ms.Read(FileByte,   0,   FileLength);   //读取图象文件数据 
 ms.Close();   
 2. 
 //以下代码也读不出正确的byte[],和上面一样,FileByte全部为0 
 System.Drawing.Imaging.FrameDimension   ImgFrmDim   =   new   System.Drawing.Imaging.FrameDimension(myImg.FrameDimensionsList[0]); 
 int   nooffrm   =   myImg.GetFrameCount(ImgFrmDim); 
 MemoryStream   ms   =   new   MemoryStream(); 
 for   (int   i   =   0;   i    <   nooffrm;   i++) 
 { 
             myImg.SelectActiveFrame(ImgFrmDim,   i); 
             myImg.Save(ms,   System.Drawing.Imaging.ImageFormat.Jpeg); 
    } 
 ms.Read(FileByte,   0,   FileLength);   //读取图象文件数据 
 ms.Close();     
 求个解决办法,谢谢了 
------解决方案--------------------FileByte 在哪赋值的?   
 gif和jpg的图象格式不一样,你这样都直接format成jpeg肯定会有问题的
------解决方案--------------------private byte[] GetByteFromImage(Image inputimage) 
         { 
             byte[] byteImage = new byte[0]; 
             using (MemoryStream ms = new MemoryStream()) 
             { 
                 try 
                 { 
                     Bitmap bitmap = new Bitmap(inputimage); 
                     GraphicsUnit gu = GraphicsUnit.Pixel; 
                     RectangleF rectf = inputimage.GetBounds(ref gu); 
                     Rectangle rect = new Rectangle((int)rectf.X, (int)rectf.Y, (int)rectf.Width, (int)rectf.Height); 
                     System.Drawing.Imaging.BitmapData bd = bitmap.LockBits(rect,  
                         System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat); 
                     bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); 
                     byteImage = ms.ToArray(); 
                     bitmap.UnlockBits(bd); 
                 } 
                 catch (Exception ex) 
                 { 
                 } 
             }   
             return byteImage; 
         }
------解决方案--------------------ms MemoryStream不是这么存的 我找下代码
------解决方案--------------------myImg.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); 
 ms.Position=0;//加上这句试试。 
 ms.Read(FileByte, 0, FileLength); //读取图象文件数据 
------解决方案--------------------这个问题,见过好多次了