You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI中SVG转PNG后图片找不到,求问存储路径

解决.NET MAUI中SVG转PNG后资源找不到的问题

问题根源

.NET MAUI在编译时会将SVG文件转换为对应平台的原生资源格式(比如Android的Drawable、iOS的Image Asset),不会将转换后的PNG作为独立文件存放在应用包中,所以你用FileSystem.Current.OpenAppPackageFileAsync找不到mpte.png——这个文件根本不存在于包文件系统里。另外你的ToImageSource方法逻辑也有问题:它把文件当成Base64文本读取,但转换后的资源不是Base64格式的文本文件。

修正方案

1. 确保SVG文件的生成操作设置正确

在Visual Studio中右键你的SVG文件(比如mpte.svg),选择属性:

  • 把"生成操作"设置为MauiImage(这是.NET MAUI处理图像资源的专用设置,会自动处理SVG转平台格式)
  • "复制到输出目录"设置为"不复制"即可

2. 修改图像加载逻辑

不需要自己写复杂的流处理,直接用.NET MAUI内置的跨平台资源加载方式:

  • 若在XAML中绑定,直接写ImageSource="mpte.svg"即可,框架会自动识别并加载转换后的资源
  • 若需在代码中生成ImageSource,用ImageSource.FromResource方法,注意要包含项目命名空间:
public static ImageSource ToImageSource(this string resourceName)
{
    try
    {
        // 替换成你的项目根命名空间,比如"MySimpleMauiApp"
        string fullResourceName = $"你的项目命名空间.{resourceName}";
        return ImageSource.FromResource(fullResourceName);
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
        throw;
    }
}

3. 额外注意事项

  • 不要手动传入mpte.png,直接用原SVG文件名mpte.svg即可,.NET MAUI会自动处理转换逻辑
  • 如果图像放在子文件夹里,资源名要包含路径,比如Images.mpte.svg(对应Images文件夹下的文件)

内容的提问来源于stack exchange,提问作者Nodoid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 20:33:28