📜  如何使用图像选择器将图像保存到应用程序目录 (1)

📅  最后修改于: 2023-12-03 14:52:05.039000             🧑  作者: Mango

如何使用图像选择器将图像保存到应用程序目录

在移动应用程序中,图片是很重要的组成部分,但我们如何把图片保存到应用程序的目录中呢?通过使用图像选择器,可以很容易地实现这个功能。

步骤
  1. 在 XML 布局文件中添加 ImageView 视图。

    <ImageView
         android:id="@+id/imageView"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
    
  2. 使用 Intent 启动图像选择器。

    Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    startActivityForResult(intent, 1);
    
  3. 处理从图像选择器返回的数据。

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
    
        if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();
    
            ImageView imageView = getView().findViewById(R.id.imageView);
            imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));
    
            saveImageToInternalStorage(picturePath);
        }
    }
    
  4. 将图像保存到应用程序目录中。

    private void saveImageToInternalStorage(String picturePath) {
        String filename = "myimage.jpg";
        File directory = getActivity().getDir("imageDir", Context.MODE_PRIVATE);
        File dest = new File(directory, filename);
    
        try {
            InputStream in = new FileInputStream(picturePath);
            OutputStream out = new FileOutputStream(dest);
    
            byte[] buffer = new byte[1024];
            int len;
            while ((len = in.read(buffer)) != -1) {
                out.write(buffer, 0, len);
            }
    
            in.close();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
解释
  1. 添加 ImageView 视图。

    在 XML 布局文件中添加 ImageView 视图,以便将所选图像显示出来。

  2. 启动图像选择器。

    使用 Intent 启动图像选择器,使用户可以从他们的设备中选择一张图片。

  3. 处理返回的数据。

    当从图像选择器返回数据时,我们需要使用 onActivityResult() 方法来处理该数据。在此方法中,我们可以从 Intent 对象中提取出所选图像的 URI,并将其加载到 ImageView 中。

  4. 将图像保存到应用程序目录中。

    最后,我们将选择的图像保存到应用程序的目录中。在这里,我们使用了 Context.getDir() 方法来获取一个私有目录,然后将所选图片复制到此目录中。注意,我们使用了 FileInputStream 和 FileOutputStream 来读取和写入数据。

通过使用此方法,您可以轻松地将图像保存到您的应用程序目录中,并在需要的时候加载它们。