首页 文章

如何在pcl上加载xamarin共享图像的内容(stream或byte [])?

提问于
浏览
2

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

但是,我需要将这些图像的内容加载到Stream或byte [](当然,从/到很简单的转换)来提前调用服务 .

我怎么能完成这个任务?如果在pcl项目中有一种方法比较好,但如果需要特定平台的代码,没问题 .

注意:如果我们将图像作为资源嵌入到pcl项目中,这个任务会很简单,但我不希望这样,我不希望增加应用程序大小嵌入重复的图像 .

注意:还有其他“类似”的问题,但请从嵌入式资源中加载内容,这不是这里的情况 .

2 回答

  • 1

    您需要在特定平台中使用依赖性和需要代码来从映像获取base64字符串,并在本地自动获取路径

    在Pcl项目中

    public interface IGetBase64
        {
            string GenerateBase64(string FileName);
        }
    

    在Ios Render中

    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;
        }
    
  • 0

    您可以在Android平台的 Asset 文件夹和iOS平台的 Resources 文件夹中添加图像 .

    然后在平台中获取图像的路径:

    在Android中,只需将前缀 file:///android_asset/ 添加到图像名称即可 .

    在iOS中,使用代码获取路径:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"IMAGE_FILE_NAME" ofType:@"IMAGE_TYPE"];
    

    然后通过依赖服务将路径值返回给PCL .

相关问题