cuốn sách gpt4 ai đã làm

BitmapFactory.decodeStream(InputStream is) trả về null cho inputStream không null trên Android

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 22:28:40 26 4
mua khóa gpt4 Nike

Tôi đang phát triển một ứng dụng Android có Chế độ xem chứa nhiều phòng trưng bày. Nội dung của thư viện (bitmap) có màu đỏ từ Internet.

Đối với thư viện đầu tiên, mọi thứ đều hoạt động tốt, nhưng khi cố tải xuống hình ảnh đầu tiên của thư viện thứ hai,BitmapFactory.decodeStream(InputStream) Trả về null trong khi luồng không rỗng.

public void LoadBitmap() ném IOException {

for (int i = 0; i < image.size(); ++i) {
URL ulrn = URL mới(images.get(i).getThumbUrl());
HttpURLConnection con = (HttpURLConnection) ulrn.openConnection();
Luồng đầu vào là = con.getInputStream();
hình ảnh.get(i).setImage(BitmapFactory.decodeStream(is));
Log.i("MY_TAG", "Chiều cao: " + Images.get(i).getImage().getHeight());
}
}

getThumbUrl() Trả về URL của hình ảnh (ví dụ: http://mydomain.com/image.jpg) và trong Log.i("MY_TAG", "Chiều cao: ... ) dòng ném một NullPointerNgoại lệ(hình ảnh là một đối tượng chứa lớp của tôi ArrayList, cũng chứa URL và bitmap).

Cảm ơn vì lời khuyên nào!

câu trả lời hay nhất

Tôi đã gặp phải điều này. Hãy thử sử dụng BufferedHttpEntity với luồng đầu vào của bạn. Tôi nhận thấy rằng điều này tránh được 99,9% vấn đề nhận được giá trị rỗng im lặng từ giải mã.

Có thể không quan trọng, nhưng tôi sử dụng org.apache.http.client.HttpClient một cách đáng tin cậy thay vì HttpURLConnection như thế này:

Giải mã bitmap tĩnh công khaiFromUrl(Máy khách httpClient, url URL, Cấu hình bitmapCOnfig)
{
Phản hồi httpResponse=null;
Bản đồ bit b=null;
Dòng đầu vào=null;

BitmapFactory.Options giải mãOptions = BitmapFactory.Options mới();
giải mãOptions.inPreferredConfig = bitmapCOnfig;
thử
{
Yêu cầu HttpGet = HttpGet mới(url.toURI());
phản hồi = client.execute(yêu cầu);
if (response.getStatusLine().getStatusCode() != 200)
{
MyLogger.w("Phản hồi sai trên " + url.toString());
MyLogger.w ("phản hồi http: " + reply.getStatusLine().toString());
return null;
}
BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(response.getEntity());
instream = bufHttpEntity.getContent();

trả về BitmapFactory.decodeStream(instream, null, decodeOptions);
}
catch (Exception ex)
{
MyLogger.e("lỗi giải mã bitmap từ:" + url, ex);
nếu (phản hồi != null)
{
MyLogger.e("trạng thái http: " + reply.getStatusLine().getStatusCode());
}
return null;
}
finally
{
nếu (trong dòng != null)
{
thử {
instream.close();
} catch (IOException e) {
MyLogger.e("lỗi đóng luồng", e);
}
}
}
}

Về android - BitmapFactory.decodeStream(InputStream is) trả về null cho inputStream không null trên Android, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/5940487/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress