在数据库中有效地存储对 SD 上图像的引用



我是编程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();
}

制作完成后,我现在不知道如何存储此"引用"以及如何实现"从数据库获取数据" - 我正在考虑将(与特定照片相关的某种其他数据(存储在数据库字符串中,该路径指向图像,后来在从数据库读取数据时,也读取图像 - 但是如何有效地做到这一点?(我知道从数据库获取数据必须作为线程(AsyncTask ? ((?

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

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

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

最新更新