Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在pcl上加载xamarin共享图像的内容(流或字节[])?_C#_Xamarin_Xamarin.ios_Xamarin.forms_Xamarin.android - Fatal编程技术网

C# 如何在pcl上加载xamarin共享图像的内容(流或字节[])?

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项目中有一个更好的方法,但若需要特定平台中的代码,那个么并没有问题 注意:如果我们将图像作为资

我有一个xamarin表单解决方案,包含PCL、Android和iOS项目。我在PCL项目中有几个图像,我将它们链接到Android和iOS项目(drawable/resources文件夹)。因此,如果我想在pcl项目中的图像控件中显示这些图像,我可以直接使用,并且工作正常

但是,我需要将这些图像的内容加载到流或字节[](当然,是从/到的简单转换)中,以便提前调用服务

我怎样才能完成这项任务?若在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文件夹中,我如何在运行时访问它?此图像的绝对/相对路径是什么?您想要什么路径或内容?请澄清您的问题使用此答案您可以获得图像内容,并且可以提前调用服务