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

3

我的.png图片以Uri对象存储,并且具有以下格式

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

我该如何将这个图像加载到System.Drawing.Bitmap对象中?

请查看以下链接:https://dev59.com/qk_Ta4cB1Zd3GeqPBHyj - lordkain
1个回答

0
假设你正在使用WPF,你可以先将图像加载为BitmapImage,然后进行转换。
请参考这个答案中的"将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);
    }
}

1
这很好,但如果原始PNG包含透明像素,则在生成的位图中它们似乎会转换为黑色像素。 - p10ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接