通过数据流的形式获取GIF图片,不管是保存后的图片还是输出该文件都出现了丢帧的现象,各位有没办法,帮忙解决一下了。
C#主要部分的代码如下:
string cache_dir ="C:\\mm\\";
string filename = cache_dir +  "38752.gif";
string imageStr="http://adimg.163.com/homepage/001275/baishi051016_10050.gif";
System.Net.HttpWebRequest httpWebRequest=(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(imageStr);

System.Net.HttpWebResponse img_resp=(System.Net.HttpWebResponse)httpWebRequest.GetResponse();
System.Drawing.Image bp = System.Drawing.Image.FromStream(img_resp.GetResponseStream(),true);

bp.Save(filename,System.Drawing.Imaging.ImageFormat.Gif);

System.IO.MemoryStream ms = new System.IO.MemoryStream();
bp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte [] image_data = new byte[ms.Length];
ms.Seek(0,System.IO.SeekOrigin.Begin);
ms.Read(image_data,0,image_data.Length); Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Type","image/gif");
Response.BinaryWrite(image_data);

//Write to cache file
if(!System.IO.Directory.Exists(cache_dir))
{
System.IO.Directory.CreateDirectory(cache_dir);
}
System.IO.FileStream fs = new System.IO.FileStream("C:\\mm\\dd.gif",FileMode.Create);
fs.Write(image_data,0,image_data.Length);
fs.Close();

解决方案 »

  1.   

    你可以用WebClientstring cache_dir ="C:\\";
    string filename = cache_dir +  "38752.gif";
    string imageStr="http://adimg.163.com/homepage/001275/baishi051016_10050.gif";
    WebClient wc=new WebClient ();
    wc.DownloadFile(imageStr,filename);System.Drawing.Image img=System.Drawing.Image .FromFile(filename);
    img.Save (Response.OutputStream,System.Drawing .Imaging .ImageFormat.Gif);
      

  2.   

    vivianfdlpw() 
    非常谢谢的帮忙,照你的方法我已经把问题解决了。
    只是有点奇怪,为什么直接用从数据流中获取数据时无法实现这个呢?