BitmapFactory не может дважды декодировать CipherInputStream - PullRequest
2 голосов
/ 07 января 2011

Я шифрую, затем дешифрую изображение, которое затем передаю своему изображению, используемому для изменения размера (код, любезно заимствованный откуда-то), примерно так:

public static Bitmap loadResizedBitmap(InputStream dis, int width, int height) {

    BufferedInputStream bis = new BufferedInputStream(dis);
    Bitmap bitmap = null;
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeStream(bis, null, options);
    if (options.outHeight > 0 && options.outWidth > 0) {
        options.inJustDecodeBounds = false;
        options.inSampleSize = 2;

        while (options.outWidth / options.inSampleSize > width && 
                options.outHeight / options.inSampleSize > height) {
            options.inSampleSize++;
        }
        options.inSampleSize--;
        bitmap = BitmapFactory.decodeStream(bis, null, options);
    }
    return bitmap;
}

Проблема возникает во время второго decodeStream , BitmapFactory возвращает null . Я убедился, что первый работает, и выводит правильный размер, и т. Д. Я предполагаю, что CipherInputStream не поддерживает маркировку и сброс, поэтому я обернул его в BufferedInputStream без удачи. У кого-нибудь еще есть предложения?

1 Ответ

3 голосов
/ 07 января 2011

[ОТВЕТИТЬ]

Я переключил его на использование BitmapFactory.decodeByteArray, и это решило его.Я еще раз взглянул на API и смог передать байт [].

Мой вывод: CipherInputStream не поддерживает mark () и reset ().

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