0

我编写了一种降低颜色深度(GIF 转换)的方法,并将位图的分辨率设置为 600 像素。

颜色深度转换工作正常,但分辨率设置不起作用。

<script runat="server" language="C#">
    public static void Convert(Bitmap oldbmp, String path)
    {
        System.Drawing.Bitmap bm8Bit;
        using (MemoryStream ms = new MemoryStream())
        {
            oldbmp.Save(ms, ImageFormat.Gif);
            ms.Position = 0;            
            bm8Bit = (System.Drawing.Bitmap) System.Drawing.Image.FromStream(ms);
            bm8Bit.SetResolution(600, 600);
            bm8Bit.Save(path, System.Drawing.Imaging.ImageFormat.Bmp);
            return;
        }
    }
</script>
4

2 回答 2

1

我认为您只能在以前未保存的新位图上设置分辨率,因此如果您有退出位图,则需要将其复制到新的位图实例:

Bitmap imgCopy = new Bitmap(img);
imgCopy.SetResolution(600.0f,600.0f);

在这里阅读:http: //msdn.microsoft.com/en-us/library/system.drawing.bitmap.setresolution.aspx

使用此方法在新创建的位图上设置所需的分辨率。改变图像的分辨率不会改变它的物理尺寸。

于 2013-05-29T12:28:15.943 回答
1

嘿,尝试编写我们自己的解决方案总是好的,但它们是一个可用的库,易于实现并且效果非常好

你可能想使用它,你可以从这里下载它,它也有很好的文档。

http://imageresizing.net/download

于 2013-05-29T12:38:13.313 回答