.NET MAIImage加载异常:本地图片无法加载致转换报错求助
问题描述
我正在开发一个简单的图片转换器项目,使用以下代码加载作为参数传入的图片。图片路径为/storage/emulated/0/Download/Image Converter/Png Images/IMG_20230219_134526.png,该图片确实存在于指定位置,且可在.NET MAUI Image控件中正常显示。
用于加载图片进行转换的代码如下:
private void ConvertImage(string imagePath, string pathSave, ImageFormat format) { Microsoft.Maui.Graphics.IImage image; Assembly assembly = GetType().GetTypeInfo().Assembly; using (Stream stream = assembly.GetManifestResourceStream(imagePath)) { image = PlatformImage.FromStream(stream); } }
问题在于图片无法正确加载,导致转换后保存图片时抛出异常。
解决方案
你的代码核心错误是误用了程序集嵌入资源的加载方法GetManifestResourceStream——这个方法是用来读取打包在程序集里的内嵌资源,而非设备文件系统中的本地图片。
修改为直接从文件路径打开流即可:
private void ConvertImage(string imagePath, string pathSave, ImageFormat format) { Microsoft.Maui.Graphics.IImage image; // 打开本地文件的可读流 using (Stream stream = File.OpenRead(imagePath)) { image = PlatformImage.FromStream(stream); } // 此处添加图片格式转换及保存的逻辑 }
另外要确保应用具备文件访问权限:
- Android平台:Android 13及以下需在
AndroidManifest.xml中添加READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限;Android 13+则需添加READ_MEDIA_IMAGES权限。 - iOS平台:需在
Info.plist中配置对应权限描述,比如访问相册的NSPhotoLibraryUsageDescription。
内容的提问来源于stack exchange,提问作者Leonardo Silva
相关产品推荐
相关产品推荐

