代码之家  ›  专栏  ›  技术社区  ›  Georgy Bolyuba

如何避免Graphics.DrawImage出现抖动?

  •  1
  • Georgy Bolyuba  · 技术社区  · 15 年前

    我想把一张画在另一张上面,然后把它扔给HttpResponse。我的代码如下:

    //file name points to a gif image
    System.Drawing.Image originalImage = System.Drawing.Image.FromFile(filename);
    System.Drawing.Image smallImage = System.Drawing.Image.FromFile(smallFilename);
    
    using(Bitmap tempImage = new Bitmap(originalImage))
    {
        Graphics graphics = Graphics.FromImage(tempImage);
        PointF ulCorner = new PointF(10.0F, 10.0F);
        graphics.DrawImage(windfarmImage, ulCorner);
    }
    
    tempImage.Save(Response.OutputStream, ImageFormat.Gif);
    

    如果我把最后一行改成

    保存(Response.OutputStream,ImageFormat.Jpeg);

    它解决了这个问题。但我必须有png作为结果。我能不能把调色板从原始文件中保留下来?原始文件是gif,所以应该可以有gif作为结果,而不失去任何颜色,我猜。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Tim Greaves    15 年前

    如果源图像有大量颜色,那么将文件保存为Gif可能会导致一些抖动,因为调色板大小减少到256色。

    是要求将文件保存为Gif格式,还是可以尝试其他格式(如Jpeg或Png)?