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

MAUI Blazor中如何引用Resources/Images下的SVG转换图片?

解决MAUI Blazor中复用SVG转PNG特性的问题

问题原因

MAUI对Resources/Images下的SVG做的转PNG处理,默认是生成到应用的资源目录(供XAML绑定用),但Blazor的<img>标签只能访问wwwroot下的静态资源,所以直接引用转换后的PNG会找不到。

解决方案:让MAUI把转换后的PNG输出到wwwroot

编辑你的MAUI项目文件(.csproj),调整MauiSvg的输出配置,让转换后的PNG自动放到wwwroot目录下:

<ItemGroup>
  <!-- 匹配Resources/Images下的所有SVG文件 -->
  <MauiSvg Include="Resources\Images\*.svg">
    <!-- 指定输出到wwwroot/images目录 -->
    <OutputPath>wwwroot/images/</OutputPath>
    <!-- 确保文件更新时重新复制 -->
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <!-- 可选:指定生成的PNG尺寸,比如Scale="1,2,3"生成多分辨率版本 -->
    <!-- <Scale>1</Scale> -->
  </MauiSvg>
</ItemGroup>

引用转换后的图片

重新构建项目后,MAUI会自动把SVG转成PNG并输出到wwwroot/images,此时在Razor页面中直接用web路径引用即可:

<img src="/images/one_list2.png" alt="列表图标" />

进阶:多分辨率适配(可选)

如果需要适配不同屏幕分辨率,可以在MauiSvg中指定多个缩放比例,比如:

<MauiSvg Include="Resources\Images\one_list2.svg">
  <OutputPath>wwwroot/images/</OutputPath>
  <Scale>1,2,3</Scale>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</MauiSvg>

构建后会生成one_list2@1x.png、one_list2@2x.png等文件,然后在Blazor中用srcset实现适配:

<img 
  src="/images/one_list2@1x.png" 
  srcset="/images/one_list2@1x.png 1x, /images/one_list2@2x.png 2x, /images/one_list2@3x.png 3x"
  alt="列表图标"
/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:35:20