Java安卓中获取图片的具体方法是什么?哪种方式最有效?
- 后端开发
- 2025-10-25
- 8
在Java安卓开发中,获取图片的方法有很多种,以下是一些常用的方法:
从本地存储获取图片
1 从相册获取图片
步骤:
在AndroidManifest.xml中添加权限:
<usespermission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <usespermission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
创建一个Intent来启动相册:
Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);
在onActivityResult中处理返回的图片:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_PICK_IMAGE && resultCode == RESULT_OK && data != null) { Uri uri = data.getData(); // 使用uri获取图片 } }
2 从相机获取图片
步骤:
在AndroidManifest.xml中添加权限:
<usespermission android:name="android.permission.CAMERA" /> <usesfeature android:name="android.hardware.camera" />
创建一个Intent来启动相机:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, REQUEST_CODE_TAKE_PHOTO);
在onActivityResult中处理返回的图片:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_TAKE_PHOTO && resultCode == RESULT_OK && data != null) { Bitmap bitmap = (Bitmap) data.getExtras().get("data"); // 使用bitmap获取图片 } }
从网络获取图片
1 使用HttpURLConnection获取图片
步骤:
创建一个URL对象:
URL url = new URL("http://example.com/image.jpg");
打开连接:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
设置请求方法:


connection.setRequestMethod("GET");
获取输入流:
InputStream inputStream = connection.getInputStream();
读取输入流:
byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != 1) { // 处理buffer中的数据 }
关闭输入流:
inputStream.close();
2 使用OkHttp获取图片
步骤:
添加OkHttp依赖:
<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.9.0</version> </dependency>
创建一个OkHttpClient:

OkHttpClient client = new OkHttpClient();
创建一个Request:
Request request = new Request.Builder() .url("http://example.com/image.jpg") .build();
异步执行请求:
client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // 处理请求失败 } @Override public void onResponse(Call call, Response response) throws IOException { // 处理请求成功,获取图片 } });
使用第三方库获取图片
以下是一些常用的第三方库:
| 库名 | 简介 | 使用方法 |
|---|---|---|
| Glide | 高效的图片加载库 | Glide.with(context).load(imageUrl).into(imageView); |
| Picasso | 简单易用的图片加载库 | Picasso.with(context).load(imageUrl).into(imageView); |
| Fresco | 高性能的图片加载库 | `ImageRequest request = new ImageRequest.Builder(context) |
.setUri(imageUrl) .build(); Fresco.getImageLoader().loadImage(request, imageView);` |
FAQs
Q1:如何处理图片加载失败的情况?
A1: 在加载图片时,可以设置一个错误占位图,当图片加载失败时,显示该占位图,使用Glide时,可以设置错误占位图:
Glide.with(context) .load(imageUrl) .error(R.drawable.error_placeholder) .into(imageView);
Q2:如何获取图片的宽度和高度?
A2: 可以使用Bitmap类获取图片的宽度和高度:
Bitmap bitmap = BitmapFactory.decodeStream(inputStream); int width = bitmap.getWidth(); int height = bitmap.getHeight();