我一直在尝试保存我的图像(使用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是不是错了?
发布于 2016-02-26 02:40:39
你的想法是对的。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);https://stackoverflow.com/questions/33751755
复制相似问题