C# 如何在pcl上加载xamarin共享图像的内容(流或字节[])?
我有一个xamarin表单解决方案,包含PCL、Android和iOS项目。我在PCL项目中有几个图像,我将它们链接到Android和iOS项目(drawable/resources文件夹)。因此,如果我想在pcl项目中的图像控件中显示这些图像,我可以直接使用,并且工作正常 但是,我需要将这些图像的内容加载到流或字节[](当然,是从/到的简单转换)中,以便提前调用服务 我怎样才能完成这项任务?若在pcl项目中有一个更好的方法,但若需要特定平台中的代码,那个么并没有问题 注意:如果我们将图像作为资源嵌入到pcl项目中,这项任务将很容易,但我不想这样,我不想增加嵌入重复图像的应用程序大小C# 如何在pcl上加载xamarin共享图像的内容(流或字节[])?,c#,xamarin,xamarin.ios,xamarin.forms,xamarin.android,C#,Xamarin,Xamarin.ios,Xamarin.forms,Xamarin.android,我有一个xamarin表单解决方案,包含PCL、Android和iOS项目。我在PCL项目中有几个图像,我将它们链接到Android和iOS项目(drawable/resources文件夹)。因此,如果我想在pcl项目中的图像控件中显示这些图像,我可以直接使用,并且工作正常 但是,我需要将这些图像的内容加载到流或字节[](当然,是从/到的简单转换)中,以便提前调用服务 我怎样才能完成这项任务?若在pcl项目中有一个更好的方法,但若需要特定平台中的代码,那个么并没有问题 注意:如果我们将图像作为资
注意:还有其他“类似”的问题,但请从嵌入式资源加载内容,这里不是这种情况。您需要使用依赖性,并需要特定平台中的代码,才能从图像中获取base64字符串,并在本地自动获取路径 在Pcl项目中
public interface IGetBase64
{
string GenerateBase64(string FileName);
}
在Ios渲染中
public string GenerateBase64(string FileName)
{
byte[] b = System.IO.File.ReadAllBytes(FileName);
string s = Convert.ToBase64String(b);
return s;
}
在Android中
public string GenerateBase64(string FileName)
{
byte[] b = System.IO.File.ReadAllBytes(FileName);
string s = Convert.ToBase64String(b);
return s;
}
您可以在Android平台的
Asset
文件夹和iOS平台的Resources
文件夹中添加图像
然后在平台中获取图像的路径:
在Android中,只需添加前缀file:///android_asset/
添加到图像名称
在iOS中,使用代码获取路径:
NSString *path = [[NSBundle mainBundle] pathForResource:@"IMAGE_FILE_NAME" ofType:@"IMAGE_TYPE"];
然后通过DependencyService将路径值返回给PCL。您可以在平台项目中使用DependencyService,并将图像转换为字节[],然后返回给PCL。如果我理解正确,这就是你需要的。谢谢@Dilmah,但是我在哪里找到这些图片?在drawable(android)和resources(ios)平台上,图像的标准文件夹是什么?嗨,迭戈,这不是一个重复的问题。引用的问题是关于嵌入式资源图像的,这里不是这样。见问题中我的注释。谢谢你好您的PCL项目中图像的构建操作是什么?您的平台代码中的图像是作为PCL文件的链接添加的?@Diegrafaelsouza,我的PCL项目中图像的构建操作是“内容”,我不希望嵌入它。是的,我的平台代码中的图像是作为PCL文件的链接添加的,带有适当的构建操作,例如AndroidResource。drawable(android)和resources(ios)平台上图像的标准文件夹是什么?在android resources/drawable和ios resources中,如果我放文件“image.png”,我的问题是关于应用程序运行时的在android项目的Resources/Drawable文件夹中,我如何在运行时访问它?此图像的绝对/相对路径是什么?您想要什么路径或内容?请澄清您的问题使用此答案您可以获得图像内容,并且可以提前调用服务