目前我正在使用图库中的相机保存图像,并将其路径保存在sq lite表中。
在API调用期间,我需要保存图像的字节数组。
我可以按名称获取图像的字节数组吗?
请帮帮我。
答案 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);
此外,这里需要一些微调。
您现在正在做的是从共享代码中调用通用接口。运行时确定接口获得哪种实现,以及将平台特定代码实现为接口的方式。