Размер растрового изображения превышает исключение, возникающее при извлечении изображения из Интернета - PullRequest
0 голосов
/ 05 апреля 2011

У меня проблема с загрузкой изображений из Интернета, проблема в том, что.У меня есть просмотр списка с пользовательским макетом изображения и просмотра текста.В моем случае я получаю изображение из Интернета, используя данную функцию удара, но когда приходит большое изображение, возникает исключение Размер растрового изображения .

    private static InputStream fetch(String urlString)
            throws MalformedURLException, IOException {
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet request = new HttpGet(urlString);
        HttpResponse response = httpClient.execute(request);
        return response.getEntity().getContent();
    }

    Resources res;

    // *********** Function For Fetching Image form Internet
    public static Drawable LoadImage(String URL, BitmapFactory.Options options) {

        try {

            if (fetch(URL) != null) {
                try {
                    InputStream obj = fetch(URL);
                    bmp = BitmapFactory.decodeStream(obj, null, options);
                    obj.reset();

                } catch (Exception e) {
                }
                Drawable drawable = new BitmapDrawable(bmp);
                return drawable;
            } else {
                bitmap = BitmapFactory.decodeResource(
                        TennisAppActivity.mContext.getResources(),
                        R.drawable.profileplaceholder);
                Drawable drawable = new BitmapDrawable(bitmap);
                return drawable;
            }
        } catch (Exception e) {
            Log.e("GUIMethodClasas", "fetchDrawable failed", e);
            return null;
        }

    }

. Я использую приведенный выше код для извлечения изображенияиз интернета.Пожалуйста, любой приятель, дайте мне решение как можно скорее.

1 Ответ

0 голосов
/ 06 апреля 2011

Используйте параметры BitmapFactory и установите более высокий размер выборки, чем по умолчанию, чтобы использовать меньше памяти и получить меньшее изображение, что проще для обработки вашим приложением.

Вы можете сделать это так:

BitmapFactory.Options options=new BitmapFactory.Options();
options.inSampleSize = 4; //or any number you like. A power of 2 is recommended.

Затем вы можете передать эти параметры своей функции, чтобы они использовались при декодировании потока.

Размытие, которое вы упоминаете, - это стоимость уменьшения частоты дискретизации изображения. Если вы не уменьшите количество семплов, вы не сможете уменьшить их размер при получении из потока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...