[Bitmap] Bitmap에서 decoder->decode returned false 오류 직접 해결

시나리오:
오늘 운영부의 동료는 한 고객이 제기한 문제를 피드백했다. 바로 원래 인터넷 사진이 불러오는 것은 문제가 없었지만 지금은 표시되지 않는다는 것이다.그래서 코드를 추적했는데 서버에서 되돌아오는 json 데이터에 문제가 없고 파일을 브라우저로 열어도 문제가 없다는 것을 발견했습니다. 궁금했습니다. 처음에는 연결 시간이 초과된 줄 알았지만 서버의 운행 상태가 양호하기 때문에 배제했습니다.또 그림이 너무 커서 OOM일 수도 있지만 그림은 압축된 반환 그림의 크기도 100K+이다.드디어 콘솔에서 잡혔어요.
decoder->decode returned false 오류
그래, 바로 그거야. 근원을 찾았어.
솔루션:
참조:
http://stackoverflow.com/questions/4339082/android-decoder-decode-returned-false-for-bitmap-download
코드는 다음과 같습니다.
        
public static Bitmap loadImageFromUrl(String url) {
        URL m;
        InputStream i = null;
        BufferedInputStream bis = null;
        ByteArrayOutputStream out =null;
        try {
            m = new URL(url);
            i = (InputStream) m.getContent();
            bis = new BufferedInputStream(i,1024 * 8);
            out = new ByteArrayOutputStream();
            int len=0;
            byte[] buffer = new byte[1024];
            while((len = bis.read(buffer)) != -1){
                out.write(buffer, 0, len);
            }
            out.close();
            bis.close();
        } catch (MalformedURLException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] data = out.toByteArray();
        Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
        //Drawable d = Drawable.createFromStream(i, "src");
        return bitmap;
    }

좋은 웹페이지 즐겨찾기