我使用下面的代码保存图像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));
答案 0 :(得分:4)
它取决于字节数组的内容。
假设您的字节数组是URI字符,您可以使用以下代码:
byte [] buf = <your byte array>;
String s = new String(buf, "UTF-8");
URI uri = URI.parse(s);
但是在你的情况下它不可能将图像字节数组转换为图像uri,U可以保存你的图像uri而不是存储位图。所以你可以把它看作图像uri并减少记忆空间。