在DB中有效地存储SD上的图像参考

时间:2018-02-02 10:30:56

标签: android database image sqlite blob

我对Android的编程很新,我有一个问题 - 我正在创建一个存储“有趣”图像的应用程序,并允许用户查看所有这些,评价它们(至少我想这样做; ))。我试图创建一个非常简单的数据库,将图像存储为BLOB,但论坛上有人告诉我这是一个坏主意 - 所以我决定将图像存储在SD上(这段代码主要来自Stack):

private void savePicToSD(){
     Toast.makeText(getActivity(),"Saving...",Toast.LENGTH_SHORT).show();
    //getting BitMap from ImageView
    Bitmap imageToSave=((BitmapDrawable)preview.getDrawable()).getBitmap();

    // getting env var representing path
    String root= Environment.getExternalStorageDirectory().toString();
    Toast.makeText(getActivity(),root,Toast.LENGTH_LONG).show();
    File dir=new File(root+DIR_NAME_);



     dir.mkdirs();

    String fileNam="Image-"+FILE_COUNTER_+".jpg";
    FILE_COUNTER_=FILE_COUNTER_.add(BigInteger.valueOf(1));
    File fileSav=new File(dir,fileNam);


    //I don't use try-with-resources because of API lvl
    FileOutputStream out=null;
    try{
        out=new FileOutputStream(fileSav);

        //saving compressed file ot the dir
        imageToSave.compress(Bitmap.CompressFormat.JPEG,90,out);
        out.flush();
        out.close();
    }catch(Exception ex) {
        ex.printStackTrace();
        Toast.makeText(getActivity(), "Error during saving.", Toast.LENGTH_SHORT).show();
    }

    Toast.makeText(getActivity(),"Image saved.",Toast.LENGTH_LONG).show();

}

制作之后我现在不知道如何存储这个“参考”以及如何实现“从数据库中获取数据” - 我正在考虑在DB字符串中存储(与某些其他数据相关的特定照片)连接图像的路径以及稍后从DB读取数据时,还要读取图像 - 但如何有效地执行此操作? (我知道从DB获取数据必须以线程(AsyncTask?))来完成?

2 个答案:

答案 0 :(得分:1)

我认为您可以做的最好的事情是将图像的路径存储在BDD或相对路径中然后访问它

答案 1 :(得分:1)

将imagePath / fileName存储在本地数据库中,同时将图像保存在文件系统(SD卡)中,然后当您想要返回该图像时,只需使用存储在中的imagePath / fileName从文件系统中获取该图像。数据库中。

我希望您知道如何在SD卡中创建文件和存储。