求可将SVG转Android和iOS多分辨率资源的工具(Xamarin开发场景)
我太懂你的痛点了——不想为了生成点资源就打开Android Studio或Xcode,只想快速把SVG转成iOS的@1x/@2x/@3x PNG,还有Android对应hdpi/xhdpi/xxhdpi等目录下的资源,还得保证画质不缩水。作为Xamarin开发者,确实需要这类轻量化的工具,下面给你推荐几个靠谱的选项:
免费工具
SVG2VectorDrawable + 自定义脚本组合
这个组合特别适合Xamarin开发者:先用SVG2VectorDrawable把SVG转成Android的VectorDrawable(.xml格式),接着可以用Python或PowerShell写个简单脚本,调用inkscape或rsvg-convert这类命令行工具,批量导出不同分辨率的PNG,还能自动整理到iOS和Android的标准目录结构里。
优点是完全免费,分辨率参数可以自己灵活调整;缺点是需要一点点脚本基础,不过网上能找到现成的脚本模板,改改就能用。Inkscape(命令行批量处理)
Inkscape是免费的矢量图编辑工具,用它的命令行模式可以高效批量处理SVG。比如导出iOS的@3x图可以这么写:inkscape my_img.svg --export-type=png --export-width=324 --export-filename=my_img@3x.png(这里的宽度要根据你SVG的原始尺寸乘以3,对应@3x的分辨率)
你可以写个批处理或Shell脚本,一次性生成所有需要的分辨率,再自动把文件归类到对应的目录后打包。
优点是完全免费,导出参数可控;缺点是需要手动写脚本或者重复执行命令,适合愿意折腾一点的开发者。
付费工具
Asset Studio(在线工具)
这个在线工具简直是懒人福音:上传SVG,一键选择需要生成的平台(iOS+Android),它会自动生成全套资源并按标准目录打包,直接下载压缩包就行。还支持自定义分辨率,导出的PNG画质也有保证。
优点是操作零门槛,不用安装任何软件,生成速度快;缺点是部分高级功能需要付费,但基础的跨平台资源导出完全够用。Sketch
如果你已经有Sketch的订阅,它可以直接导入SVG,用切片工具一键导出适配iOS和Android的多分辨率资源,还能自动生成对应的目录结构。除了转资源,还能顺便对SVG做一些微调,适合经常需要处理UI资源的开发者。
额外小技巧(不用转PNG)
其实Xamarin开发里,你可以直接用SVG作为资源——比如借助FFImageLoading库,它支持直接加载SVG,还能自动适配不同屏幕分辨率,这样连转PNG的步骤都省了。不过如果你的项目必须用PNG资源的话,上面的工具就更合适。
内容的提问来源于stack exchange,提问作者Matthieu Lemonnier

