我正在Android中使用camera2 API捕获图像并将其保存到“外部”存储中的手机中。我将外部引用放在引号中,因为即使Android将外部存储命名为存储位置,该存储位置仍位于手机上,而不是SD卡或物理外部存储设备上。但是,项目的下一步是将刚捕获的图像存储到Microsoft SQL Server数据库中。我正在尝试将图像转换为位图,以便可以将其存储在数据库中。
我已经在下面尝试使用此代码,但是它有一些缺陷。我正在对文件大小进行硬编码(这甚至不是准确的文件大小),而且我正在从图片中读取字节,但未将它们存储在位图对象中。
公共System.IO.Stream GetPictureFromFile() {
try
{
var file = Android.OS.Environment.GetExternalStoragePublicDirectory("/RAW_2019_01_24_16_55_11_638.dng");
System.IO.Stream openStream = System.IO.File.Open(file.AbsolutePath, System.IO.FileMode.Open);
System.IO.FileStream fs = System.IO.File.Create("/storage/emulated/0/image.dng");
for (int i = 0; i < 2500; i++)//Replace Hardcoded filelength
{
fs.WriteByte((byte)openStream.ReadByte());
}
openStream = Assets.Open("/storage/emulated/0/image.dng");
openStream.Close();
return openStream;
}
catch (Exception ex)
{
throw ex;
}
}
尝试打开新创建的“ image.dng”并将其保存在“ openStream”流对象中时,此代码失败。我想找到一种避免使用openStream对象并将数据直接存储到位图对象中的方法。