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

本文关键字:加载 图像 System Drawing 对象 Bitmap png 资源 Uri | 更新日期: 2023-09-27 18:26:59

My.png图像存储在Uri对象上,其格式为

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

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

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

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

请参见关于"将位图图像转换为位图,反之亦然"的答案

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);
    }
}