2017-12-11 19 views
0

imageViewから画像をビットマップに保存しようとしています。その画像をアンドロイドデバイスのギャラリーに保存できます。画像を保存するたびに、imageViewの背景は保存されません。私は何が欠けていますか?ここでimageViewの背景画像をビットマップに保存する方法は?

は私のコードです:ギャラリーに画像を保存するための

ImageView imageView = (ImageView) findViewById(R.id.img); 
imageView.setBackgroundResource(R.drawable.img1); 
BitmapDrawable draw = (BitmapDrawable) imageView.getDrawable(); 
Bitmap bitmap = draw.getBitmap(); 

コード:

FileOutputStream outStream = null; 
      File dir = new File(
        Environment 
          .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), 
        "MyAlbum"); 
      if (!dir.exists()) { 
       if (!dir.mkdirs()) { 
        Log.d("MyAlbum", "failed to create directory"); 
        Toast.makeText(MainActivity.this, "Failed to make directory", Toast.LENGTH_SHORT).show(); 
       } 
      } 
      String fileName = String.format("%d.jpg", System.currentTimeMillis()); 
      File outFile = new File(dir, fileName); 
      try { 
       outStream = new FileOutputStream(outFile); 
       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 
       outStream.flush(); 
       outStream.close(); 

       Toast.makeText(getApplicationContext(), "PICTURE SAVED", Toast.LENGTH_SHORT).show(); 
       Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
       intent.setData(Uri.fromFile(dir)); 
       sendBroadcast(intent); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
+0

アダプターはありますか?あなたは関連する場所のコードを共有することができます – propoLis

+0

どこに画像を記憶装置に保存するための残りのコードはありますか? –

+0

@ankit画像がストレージに保存されるようになりました。 –

答えて

1

scこのビュー(ImageView)の再取得では、この時点でこのビューに描画されたものを取り込み、保存できるビットマップに変換します。

回答はすでにhereと記載されています。

魔法の一部は、あなたのスナップショットbtimapを使用することができます

ImageView yourImageView = .. // Get reference it to your view. 
yourImageView.setDrawingCacheEnabled(true); 
Bitmap bitmap = Bitmap.createBitmap(yourImageView.getDrawingCache()); 
yourImageView.setDrawingCacheEnabled(false); 

タダということです。

+0

ありがとうございます(Y) –

+0

それはあなたのために働く場合は、答えをマークすることを忘れないでください! Cheers – elmorabea

+0

imageViewのスクリーンショットを撮ると、両方の画像の幅と高さが異なります。そのため、画像の高さが小さいほど画像が伸びてしまいます。 @elmorabea –

0

あなたはこれを試してみることができ、

private void saveImageToStorage(Bitmap finalBitmap, String image_name) { 

     String root = Environment.getExternalStorageDirectory().toString(); 
     File myDir = new File(root); 
     myDir.mkdirs(); 
     String fname = "Image-" + image_name+ ".jpg"; 
     File file = new File(myDir, fname); 
     if (file.exists()) file.delete(); 
     Log.i("LOAD", root + fname); 
     try { 
      FileOutputStream out = new FileOutputStream(file); 
      finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
      out.flush(); 
      out.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

ハッピーコーディング: - )

+0

あなたの答えは質問の質問とはまったく異なっています –

関連する問題