如何将byte []转换为Uri图像

Ton*_*ony -1 sqlite android uri image

我通过使用以下代码保存图像uri

 public void insert (Uri image) throws SQLiteException {
        SQLiteDatabase database = mdb.getWritableDatabase();
        ContentValues cv = new ContentValues();
        try {
            InputStream iStream = getContentResolver().openInputStream(image);
            byte[] inputData = com.example.tony.monthlyexpenses.Utils.getBytes(iStream);
            cv.put(MyDatabaseHelper.KEY_IMAGE,inputData);
        }catch(IOException ioe)
        {
            Log.e("A", "<saveImageInDB> Error : " + ioe.getLocalizedMessage());
        }
        database.insert(MyDatabaseHelper.TABLE_EXPENSES, null, cv);
        database.close();
    }
Run Code Online (Sandbox Code Playgroud)

实用程序

    public static Bitmap getImage(byte[] image) {
            return BitmapFactory.decodeByteArray(image, 0, image.length);
        }

 public static byte[] getBytes(InputStream inputStream) throws IOException {
        ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
        int bufferSize = 1024;
        byte[] buffer = new byte[bufferSize];

        int len = 0;
        while ((len = inputStream.read(buffer)) != -1) {
            byteBuffer.write(buffer, 0, len);
        }
        return byteBuffer.toByteArray();
    }
Run Code Online (Sandbox Code Playgroud)

现在,我想检索图像并显示为setImage Uri而不是setImage'Bitmap'。

 byte[] bb = cursor.getBlob(cursor.getColumnIndex("ImageReceipt"));
 imageView.setImageBitmap(Utils.getImage(bb));
Run Code Online (Sandbox Code Playgroud)

Nas*_*Nas 5

它取决于字节数组的内容。

假设您的字节数组是URI字符,则可以使用以下代码:

byte [] buf = <your byte array>;
String s = new String(buf, "UTF-8");
Uri uri = Uri.parse(s);
Run Code Online (Sandbox Code Playgroud)

但是在您的情况下,无法将图像字节数组转换为图像Uri,U可以保存您的图像Uri而不是存储位图。这样您就可以将其读取为图像Uri并减少存储空间。

  • @Tony请检查我的答案,在您的情况下,无法将图像字节数组转换为图像 uri。 (2认同)
  • 不客气。yes 可以将 uri 作为字符串传递到 TEXT 或 VARCHAR 数据类型列。 (2认同)