如何将byte []转换为Uri Image

时间:2016-12-19 17:44:25

标签: android image sqlite uri

我使用下面的代码保存图像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();
    }

的Utils

    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();
    }

现在我想要检索图像并显示为setImage Uri而不是setImage&#39; Bitmap&#39;。

 byte[] bb = cursor.getBlob(cursor.getColumnIndex("ImageReceipt"));
 imageView.setImageBitmap(Utils.getImage(bb));

1 个答案:

答案 0 :(得分:4)

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

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

byte [] buf = <your byte array>;
String s = new String(buf, "UTF-8");
URI uri = URI.parse(s);

但是在你的情况下它不可能将图像字节数组转换为图像uri,U可以保存你的图像uri而不是存储位图。所以你可以把它看作图像uri并减少记忆空间。