如何打开Android“外部”存储中的文件,将图片读入位图对象,然后返回

时间:2019-02-13 18:16:55

标签: c# bitmap android-camera2

我正在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对象并将数据直接存储到位图对象中的方法。

0 个答案:

没有答案