📅  最后修改于: 2023-12-03 14:52:05.039000             🧑  作者: Mango
在移动应用程序中,图片是很重要的组成部分,但我们如何把图片保存到应用程序的目录中呢?通过使用图像选择器,可以很容易地实现这个功能。
在 XML 布局文件中添加 ImageView 视图。
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
使用 Intent 启动图像选择器。
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);
处理从图像选择器返回的数据。
@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);
}
}
将图像保存到应用程序目录中。
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();
}
}
添加 ImageView 视图。
在 XML 布局文件中添加 ImageView 视图,以便将所选图像显示出来。
启动图像选择器。
使用 Intent 启动图像选择器,使用户可以从他们的设备中选择一张图片。
处理返回的数据。
当从图像选择器返回数据时,我们需要使用 onActivityResult() 方法来处理该数据。在此方法中,我们可以从 Intent 对象中提取出所选图像的 URI,并将其加载到 ImageView 中。
将图像保存到应用程序目录中。
最后,我们将选择的图像保存到应用程序的目录中。在这里,我们使用了 Context.getDir() 方法来获取一个私有目录,然后将所选图片复制到此目录中。注意,我们使用了 FileInputStream 和 FileOutputStream 来读取和写入数据。
通过使用此方法,您可以轻松地将图像保存到您的应用程序目录中,并在需要的时候加载它们。