фон
Предположим, у меня есть inputStream, который был создан из Интернета определенного файла изображения.
Я хочу получить информацию о файле изображения и только потом его декодировать.
он полезен для нескольких целей, таких как понижающая дискретизация, а также предварительный просмотр информации до отображения изображения.
проблема
Я попытался помечать & reset inputStream, обернув inputStream с помощью BufferedInputStream, но это не сработало:
inputStream=new BufferedInputStream(inputStream);
inputStream.mark(Integer.MAX_VALUE);
final BitmapFactory.Options options=new BitmapFactory.Options();
options.inJustDecodeBounds=true;
BitmapFactory.decodeStream(inputStream,null,options);
//this works fine. i get the options filled just right.
inputStream.reset();
final Bitmap bitmap=BitmapFactory.decodeStream(inputStream,null,options);
//this returns null
для получения входного потока из URL-адреса, я использую:
public static InputStream getInputStreamFromInternet(final String urlString)
  {
  try
    {
    final URL url=new URL(urlString);
    final HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
    final InputStream in=urlConnection.getInputStream();
    return in;
    }
  catch(final Exception e)
    {
    e.printStackTrace();
    }
  return null;
  }
вопрос
как я могу заставить обработчик кода маркировать сброс?
он отлично работает с ресурсами (на самом деле мне даже не нужно создавать новый BufferedInputStream для этого, чтобы он работал), но не с inputStream из Интернета...
EDIT:
Кажется, мой код в порядке, вроде...
на некоторых сайтах (например этот и этот), он не может декодировать файл изображения даже после перезапуска.
если вы декодируете растровое изображение (и используете inSampleSize), он может декодировать его в порядке (занимает много времени).
теперь возникает вопрос, почему это происходит, и как я могу его исправить.
