Я использую камеру camera2 в Android для захвата изображения и сохранения его на моем телефоне во «внешнем» хранилище.Я поставил внешний в кавычки, потому что, хотя Android называет внешнее хранилище, место хранения по-прежнему находится на телефоне, а не на SD-карте или физическом внешнем запоминающем устройстве.Однако следующий шаг в моем проекте - сохранить только что захваченное изображение в базе данных Microsoft SQL Server.Я пытаюсь преобразовать изображение в растровое изображение, чтобы его можно было сохранить в базе данных.
Я пытался использовать этот код ниже, но у него есть несколько недостатков.Я жестко программирую размер файла (который даже не является точным размером файла), и я читаю байты из картинки, но не сохраняю их в растровом объекте.
public 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 и сохранять данные непосредственно в объект растрового изображения.