如何检索存储在数据库中的图像路径并在图像视图中显示?

时间:2014-03-05 04:01:21

标签: android android-imageview

我正在做一个用户选择图像的项目,我们必须存储图像的路径。我可以在imageView中显示图片,但是当应用程序关闭或用户按下按钮时图像不显示。所以我必须永远保留图像,直到用户删除图像。

以下是我的代码:

Button buttonLoadImage = (Button) findViewById(R.id.pre1);
        buttonLoadImage.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent i = new Intent(
                        Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

                startActivityForResult(i, RESULT_LOAD_IMAGE);
            }
        });
    }


    @SuppressWarnings("unused")
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            Bitmap yourSelectedImage = BitmapFactory.decodeFile(picturePath);

            //testimage.setImageBitmap(yourSelectedImage);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();

            ImageView imageView = (ImageView) findViewById(R.id.im2);
            imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

            pd.open();
            pd.insert(picturePath);
            pd.close();
        }
    }

2 个答案:

答案 0 :(得分:1)

通常,当您想要将图像保存在数据库中时,它有多种方法可以存储它。

1)您可以将图像保存为数据库中的imageName。

2)您还可以将图像路径保存到数据库中,当您从字符串中的数据库中检索该路径之后,您可以解码该路径,通常我们可以在从图库中提取时执行此操作。

3)您可以将图像保存为数据库中的byte [],当您想要检索它时,您可以检索为BLOB图像,然后将该byte []转换为Bitmap并将该位图设置为ImageView。

答案 1 :(得分:0)

看你可以做两件事: -

  1. 如果您希望图像保留在原始位置,则只能使用其路径,并将该路径保存到某些位置,如sharedPreferencefileSystem,sqlite DB或任何var。< / LI>
  2. 您可以将该图像复制到应用程序文件的另一种方法,然后您可以使用该图像
  3. 如果您有图像路径,那么您可以获得如下图像: -

    private void loadImageFromStorage(String path)
        {
    
            try {
    
    //  if you want to use the same path then use this
    Bitmap b = BitmapFactory.decodeFile(pathName);
                    ImageView img=(ImageView)findViewById(R.id.imgPicker);
                img.setImageBitmap(b);
            } 
            catch (FileNotFoundException e) 
            {
                e.printStackTrace();
            }
    
        }
    

    不要忘记授予权限<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />