как получить растровую информацию, а затем декодировать растровое изображение из интернет-inputStream?

фон

Предположим, у меня есть inputStream, который был создан из Интернета определенного файла изображения.

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

Это'Это полезно для нескольких целей, таких как понижающая выборка, а также предварительный просмотр информации перед показом изображения.

проблема

мы пытались пометить &сбросить 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

для получения inputStream из 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 из Интернета ...

РЕДАКТИРОВАТЬ:

кажется, мой код просто отлично, вроде ...

на некоторых сайтах (например,этот а такжеэтот), он не может декодировать файл изображения даже после сброса.

если вы декодируете растровое изображение (и используете inSampleSize), он может прекрасно его декодировать (это занимает много времени).

теперь вопрос в том, почему это происходит, и как я могу это исправить.

Ответы на вопрос(4)

Ваш ответ на вопрос