gpt4 book ai didi

android - DBFlow(将图像另存为 Blob)

转载 作者:行者123 更新时间:2023-11-29 20:16:34 25 4
gpt4 key购买 nike

我一直在尝试保存我的图像(使用 DBFlow 作为 Blob 保存到数据库)。
我收到这样的错误..

Error:(90, 30) error: incompatible types
required: Blob
found: byte[]

我使用一些教程将图像转换为字节并将其保存到带有列 blob 的数据库中。

 try {
FileInputStream fileInputStream = new FileInputStream(imageURL);
byte[] image = new byte[fileInputStream.available()];
fileInputStream.read(image);

ImageModel imageModel = new ImageModel();
imageModel.latitude = "12345";
imageModel.img = image;
imageModel.save();

} catch (IOException e) {
e.printStackTrace();
}

最后是我的 ImageModel.class,

import com.raizlabs.android.dbflow.annotation.Column;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.data.Blob;
import com.raizlabs.android.dbflow.structure.BaseModel;

/**
* Created by Galvez on 11/17/2015.
*/
@Table(databaseName = AppDatabase.dbName)
public class ImageModel extends BaseModel {
@Column
@PrimaryKey(autoincrement = true)
long getId;

@Column
String latitude;

@Column
Blob img;
}

应该是什么问题?将图像转换为 blob 我错了吗?

最佳答案

你的想法是正确的。 Blob 类表示您要使用 BLOB 作为基础数据库列类型。你认为字节数组是在 Blob 中存储数据的方式是正确的。您只有一个小的实现问题:Blob 对象充当字节数组的包装器。在 Java 中,您不能将 byte[] 转换或强制转换为 Blob;您需要改用 Blob 对象的方法。

所以你上面的代码行应该是

imageModel.img = new Blob(image);

要取回图像数据,您可以做类似的事情

byte[] imageData = imageModel.img.getBlob();
Bitmap image = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);

关于android - DBFlow(将图像另存为 Blob),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33751755/

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