小编典典

在 Android 中从内存中保存和读取位图/图像

all

我想要做的是将图像保存到手机的内部存储器 (不是 SD 卡)

我该怎么做?

我已将图像直接从相机获取到我的应用程序中的图像视图,它一切正常。

现在我想要将此图像从图像视图保存到我的 android 设备的内部存储器,并在需要时访问它。

谁能指导我如何做到这一点?

我对android有点新,所以请,如果我能有一个详细的程序,我将不胜感激。


阅读 126

收藏
2022-07-16

共1个答案

小编典典

使用以下代码将图像保存到内部目录。

private String saveToInternalStorage(Bitmap bitmapImage){
        ContextWrapper cw = new ContextWrapper(getApplicationContext());
         // path to /data/data/yourapp/app_data/imageDir
        File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
        // Create imageDir
        File mypath=new File(directory,"profile.jpg");

        FileOutputStream fos = null;
        try {           
            fos = new FileOutputStream(mypath);
       // Use the compress method on the BitMap object to write image to the OutputStream
            bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
        } catch (Exception e) {
              e.printStackTrace();
        } finally {
            try {
              fos.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
        } 
        return directory.getAbsolutePath();
    }

解释 :

1.目录将以给定的名称创建。Javadocs 用于告诉它将在哪里创建目录。

2.您必须提供要保存的图像名称。

从内部存储器中读取文件。使用下面的代码

private void loadImageFromStorage(String path)
{

    try {
        File f=new File(path, "profile.jpg");
        Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
            ImageView img=(ImageView)findViewById(R.id.imgPicker);
        img.setImageBitmap(b);
    } 
    catch (FileNotFoundException e) 
    {
        e.printStackTrace();
    }

}
2022-07-16