bitmapfactory 加载网络图片
时间: 2023-08-31 19:10:12 浏览: 39
可以使用以下代码来使用BitmapFactory加载网络图片:
```java
private Bitmap getBitmapFromURL(String src) {
try {
URL url = new URL(src);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap myBitmap = BitmapFactory.decodeStream(input);
return myBitmap;
} catch (IOException e) {
// Log exception
return null;
}
}
```
在这个方法中,我们首先使用URL对象创建一个连接,然后使用HttpURLConnection类打开连接。我们设置连接的输入为true,然后连接到指定的URL。接下来,我们从连接中获取输入流,并使用BitmapFactory.decodeStream方法将输入流转换为Bitmap对象。最后,我们返回Bitmap对象。如果出现任何异常,我们返回null。
相关问题
安卓okhttp加载网络图片
使用 OkHttp 库加载网络图片可以通过以下步骤实现:
1. 添加 OkHttp 依赖库到项目中,可以在项目的 build.gradle 文件中添加以下代码:
```
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
}
```
2. 在需要加载图片的地方,使用 OkHttp 发起网络请求并获取图片数据,例如:
```
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(imageUrl)
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) {
throw new IOException("Unexpected code " + response);
}
InputStream inputStream = response.body().byteStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
// 在 UI 线程更新 ImageView
runOnUiThread(() -> imageView.setImageBitmap(bitmap));
} catch (IOException e) {
e.printStackTrace();
}
```
这里使用 OkHttpClient 发起网络请求,获取到响应后判断是否成功,如果成功则从响应体获取输入流,并使用 BitmapFactory 将输入流转换为 Bitmap 对象。最后使用 runOnUiThread 在 UI 线程更新 ImageView 显示图片。
注意:这段代码应该在后台线程中执行,避免在主线程中进行网络请求而导致 ANR。
BitmapFactory.decodeStream()加载图片的方法
BitmapFactory.decodeStream()方法是Android中用于从InputStream中加载图片的方法。它可以将一个输入流中的数据解码为一个Bitmap对象。
以下是一个使用BitmapFactory.decodeStream()方法加载图片的示例代码:
```java
try {
URL url = new URL("http://example.com/image.jpg"); // 图片的url地址
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream inputStream = connection.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
```
在上面的示例中,我们使用了java.net包中的URL和HttpURLConnection类从网络上获取了一张图片的输入流。然后,我们调用BitmapFactory.decodeStream()方法将输入流解码为一个Bitmap对象。最后,我们关闭了输入流。