2013-07-31 2 views
0

Мне нужно скачать изображение с httpResponse и сохранить его на внутренней памяти на устройстве Android. У меня есть этот код кода, который пытается это сделать:Сохранение изображения из httpResponce

HttpResponse httpResponse = httpClient.execute(httpPost); 

InputStream inputStream = httpResponse.getEntity().getContent(); 

Bitmap logo = BitmapFactory.decodeStream(inputStream); 

FileOutputStream fos = null; 
try { 
    fos = getApplicationContext().openFileOutput("logo.png",Context.MODE_PRIVATE); 

    logo.compress(Bitmap.CompressFormat.PNG, 90, fos); 

} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} finally { 
    fos.close(); 
} 

Но я не получаю результат, который мне нужен. Сохраненное изображение не открывается при просмотре изображений и его более крупном размере. Загрузка изображения составляет 1,71 КБ, а результат - 2,01 КБ. есть идеи?

+0

вы пробовали дело с 'BitmapFactory.Options'? –

+0

Вы пытались прервать свой 'httpResponse' (httpResponse.abort()) после вызова' decodeStream'? –

+0

@MocialovBoris httpResponse не имеет метода abort() и исключение для исключения в HttpRequestBase. Я попробую некоторые «bitmapFactory.Options» – pepela

ответ

0

Я не знаю, что это реальная проблема в вашем коде, но вы можете попробовать этот код, если вы хотите, этот код работал без каких-либо проблем для меня

Чтобы сохранить во внутреннюю память ...

File fileWithinMyDir = getApplicationContext().getFilesDir(); 
    try 
      { 
       StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
       .permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
      URL url = new URL("http://t2.gstatic.com /images?q=tbn:ANd9GcQjZgUffqqe2mKKb5VOrDNd-ZxD7sJOU7WAHlFAy6PLbtXpyQZYdw"); 
      File file = new File(fileWithinMyDir.getAbsolutePath() + "/" +"sun.jpg"); 
      URLConnection ucon = url.openConnection(); 
      InputStream is = ucon.getInputStream(); 
      BufferedInputStream bis = new BufferedInputStream(is); 
      ByteArrayBuffer baf = new ByteArrayBuffer(50); 
      int current = 0; 
      while ((current = bis.read()) != -1) 
      { 
      baf.append((byte) current); 
      } 

      FileOutputStream fos = new FileOutputStream(file); 
      fos.write(baf.toByteArray()); 
      fos.close(); 
     } 
     catch (IOException e) 
     { 
      Log.e("download", e.getMessage()); 
     } 

Чтобы загрузить изображение из внутренней памяти ..

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
      .permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
      mImgView1 = (ImageView) findViewById(R.id.mImgView1); 

      Bitmap bitmap = BitmapFactory.decodeFile(fileWithinMyDir.getAbsolutePath() + "/" +"sunn"+".file extension"); 
      mImgView1.setImageBitmap(bitmap); 
Смежные вопросы