как получить растровую информацию, а затем декодировать растровое изображение из интернет-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), он может прекрасно его декодировать (это занимает много времени).
теперь вопрос в том, почему это происходит, и как я могу это исправить.