gpt4 book ai didi

android - 图片未正确保存到数据库中(作为 BLOB)

转载 作者:行者123 更新时间:2023-11-30 04:43:56 25 4
gpt4 key购买 nike

我尝试将图片作为 BLOB 保存到数据库中,但它没有正确存储在数据库中。

传递的 byte[] 是正确的,有 4300 个字符,而在数据库中它只有 12 个字符。这就是存储在数据库中的内容:[B@43e7be68

这是我的 SQL_INSERT 的代码:

public boolean SQL_INSERT_PICTURE(PictureDatatype type) {
try{
this.db = openHelper.getWritableDatabase();
Log.d(TAG, "Insert picture");
System.out.println("insert picture");
db.execSQL("DELETE FROM picture " +
"where " + LinkPic + " = '" + type.getLink() + "'");
db.execSQL("INSERT OR REPLACE INTO picture " +
"( " + NamePic + ", " + LinkPic + ", " + PicturePic + ") " +
"VALUES ('" + type.getName() + "', '" + type.getLink() +"', '" +
type.getPicture() +"')");

System.out.println("size of the picture (bytearray): " + type.getPicture().length);
System.out.println("the picture: " + type.getPicture());
System.out.println("insert complete");
db.close();
return true;
}
catch(SQLException s){
System.out.println("Insert failed");
db.close();
return false;
}
}

我的问题是为什么数据库中没有存储正确的 byte[] 或者我该怎么做?如果您需要更多信息或代码,请告诉我。

谢谢柯比

最佳答案

使用此代码将图像转换为可以存储为 BLOB 的 ByteArray:

    private byte[] getBitmapAsByteArray(Bitmap bitmap) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// Middle value is quality, but PNG is lossless, so it's ignored.
bitmap.compress(CompressFormat.PNG, 0, outputStream);
return outputStream.toByteArray();
}

    private byte[] getBitmapAsByteArray(Bitmap bitmap) {
final int width = bitmap.getWidth();
final int height = bitmap.getHeight();
ByteBuffer byteBuffer = ByteBuffer.allocate(width * height * 4);

bitmap.copyPixelsToBuffer(byteBuffer);
return byteBuffer.array();
}

第一个选项应该始终有效。第二个选项假设每像素 32 位(ARGB_8888 格式)因此 4 个字节。如果您的位图是另一种格式(例如 565),则需要进行一些修改。

当你从数据库中读取图像数据时,这样做:

   public Bitmap loadIcon(long iconId) {
// Prepare the cursor to read from database....
byte[] bitmapData = cursor.getBlob(cursor.getColumnIndex(Columns.Icons.DATA));

return BitmapFactory.decodeByteArray(bitmapData, 0, bitmapData.length);
}

确保在执行“创建表”SQL 语句时将数据库定义为 BLOB。

关于android - 图片未正确保存到数据库中(作为 BLOB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5450488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com