Как создать растровое изображение из SDCard изображений в Android? - PullRequest
0 голосов
/ 31 мая 2011

Мне нужно создать растровое изображение из изображений SDCard, поэтому после получения URI изображения я получаю байтовые данные, открывая inputStream следующим образом

public byte[] getBytesFromFile(InputStream is)
{
    byte[] data = null;
    ByteArrayOutputStream buffer=null;
    try
    {
        buffer = new ByteArrayOutputStream();

        int nRead;
        data = new byte[16384];
        while ((nRead = is.read(data, 0, data.length)) != -1)
        {
            buffer.write(data, 0, nRead);
        }

        buffer.flush();

        return buffer.toByteArray();
    } catch (IOException e)
    {
        return null;
    }
    finally
    {
        if(data!=null)
            data = null;
        if(is!=null)
            try {
                is.close();
            } catch (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if(buffer!=null)
            {
                try {
                    buffer.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                buffer = null;
            }
            System.gc();
    }

после этого я просто создаю растровое изображение этих данных, следуя коду

byte[] data = getBytesFromFile(is);
Bitmap bm= BitmapFactory.decodeByteArray(data, 0, data.length);

но это выдает мне ошибку из памяти. многие люди направляют меня на проверку утечек памяти, но это первый шаг в моем приложении. Я имею в виду фильтр намерений. Я запускаю свое приложение из меню галереи «поделиться», которое вызывает мое приложение с изображением. Пожалуйста, помогите мне, ребята, если я ошибаюсь ... а также это исключение распространяется на устройства, которые имеют изображения с высоким разрешением (размер не превышает 1 МБ), но все равно, как это должно создавать растровые изображения ...

1 Ответ

1 голос
/ 31 мая 2011

Попробуйте использовать метод BitmapFactory.decodeStream () вместо первой загрузки байтового массива в память.Также проверьте этот вопрос для получения дополнительной информации о загрузке растровых изображений.

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