如何从嵌入式Uri资源(png图像)加载System.Drawing.Bitmap对象?

时间:2013-08-08 17:21:10

标签: c# resources uri

我的.png图像存储在Uri对象上,其格式如下

"pack://application:,,,/AppName.Modules.App.Shared;component/Images/AppName_logo.png"

如何将此图像加载到System.Drawing.Bitmap对象上?

1 个答案:

答案 0 :(得分:0)

假设您使用的是WPF,则可以先将图像加载为BitmapImage,然后进行转换。

请参见this answer以“将BitmapImage转换为Bitmap图像,反之亦然”

BitmapImage bi = new BitmapImage(
    new Uri("pack://application:,,,/AppName.Modules.App.Shared;component/Images/AppName_logo.png"));

Bitmap b = BitmapImage2Bitmap(bi);

private Bitmap BitmapImage2Bitmap(BitmapImage bitmapImage)
{
    using (MemoryStream outStream = new MemoryStream())
    {
        BitmapEncoder enc = new BmpBitmapEncoder();
        enc.Frames.Add(BitmapFrame.Create(bitmapImage));
        enc.Save(outStream);
        System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(outStream);

        return new Bitmap(bitmap);
    }
}