0

画像をダウンロードしてhttpResponse、Android デバイスの内部ストレージに保存する必要があります。私はそれをしようとしているこのコードブロックを持っています:

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 KB で、結果は 2.01 KB です。何か案は?

4

1 に答える 1

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);
于 2013-08-13T06:37:53.610 に答える