在xamarin.forms中通过imagepath从gallery获取图像的字节数组

时间:2017-04-19 08:33:26

标签: image xamarin.forms

目前我正在使用图库中的相机保存图像,并将其路径保存在sq lite表中。

在API调用期间,我需要保存图像的字节数组。

我可以按名称获取图像的字节数组吗?

请帮帮我。

1 个答案:

答案 0 :(得分:2)

如果你有文件路径,你应该可以通过File.ReadAllBytes(imagePath);获得它。

但是,这在Xamarin.Forms中的通用内容中不可用。您需要使用DependencyService

看起来像这样:

在共享代码中定义界面

public interface ILocalFileProvider
{
    byte[] GetFileBytes(string filePath);
}

然后在平台项目中实现它,就像这样

public class LocalFileProvider_iOS : ILocalFileProvider
{
    public byte[] GetFileBytes(string filePath)
    {
        return File.ReadAllBytes(filePath);
    }
}

它在Android中看起来几乎相同,但当然你应该处理错误,异常等。另外不要忘记在命名空间上方添加[assembly: Dependency(typeof(LocalFileProvider_iOS))]

您现在可以在共享代码中使用它,如下所示:var bytes = DependencyService.Get<ILocalFileProvider>().GetFileBytes(file.Path);

此外,这里需要一些微调。

您现在正在做的是从共享代码中调用通用接口。运行时确定接口获得哪种实现,以及将平台特定代码实现为接口的方式。