首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBFlow (将图像另存为Blob)

DBFlow (将图像另存为Blob)
EN

Stack Overflow用户
提问于 2015-11-17 15:56:51
回答 1查看 1.3K关注 0票数 1

我一直在尝试保存我的图像(使用DBFlow以Blob格式保存到数据库中)。

我收到类似这样的错误..

代码语言:javascript
复制
Error:(90, 30) error: incompatible types
required: Blob
found:    byte[]

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

代码语言:javascript
复制
 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

代码语言:javascript
复制
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是不是错了?

EN

回答 1

Stack Overflow用户

发布于 2016-02-26 02:40:39

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

所以上面的代码行应该是

代码语言:javascript
复制
imageModel.img = new Blob(image);

要检索回图像数据,您可能需要执行以下操作

代码语言:javascript
复制
byte[] imageData = imageModel.img.getBlob();
Bitmap image = BitmapFactory.decodeByteArray(imageData, 0, imageData.length);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33751755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档