1. ホーム
  2. android

[解決済み] Androidの内部メモリからのビットマップ/画像の保存と読み込み

2022-04-14 17:44:49

質問

携帯電話の内部メモリーに画像を保存したいのですが。 (SDカードではありません) .

どうすればいいのですか?

私はカメラからアプリの画像ビューに直接画像を取得し、すべて正常に動作しています。

今、私が欲しいのは、イメージビューから私のアンドロイドデバイスの内部メモリにこの画像を保存し、また必要なときにそれにアクセスすることです。

どなたか、この方法を教えていただけませんか?

アンドロイドは少し初めてなので、詳しい手順があればお願いします。

解決するには?

以下のコードを使用して、画像を内部ディレクトリに保存してください。

private String saveToInternalStorage(Bitmap bitmapImage){
        ContextWrapper cw = new ContextWrapper(getApplicationContext());
         // path to /data/data/yourapp/app_data/imageDir
        File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
        // Create imageDir
        File mypath=new File(directory,"profile.jpg");

        FileOutputStream fos = null;
        try {           
            fos = new FileOutputStream(mypath);
       // Use the compress method on the BitMap object to write image to the OutputStream
            bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
        } catch (Exception e) {
              e.printStackTrace();
        } finally {
            try {
              fos.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
        } 
        return directory.getAbsolutePath();
    }

説明:

1.指定された名前のディレクトリが作成されます。Javadocsは、ディレクトリがどこに作成されるかを正確に伝えるためのものです。

2.保存したい画像名を指定します。

内蔵メモリからファイルを読み出す場合。以下のコードを使用してください。

private void loadImageFromStorage(String path)
{

    try {
        File f=new File(path, "profile.jpg");
        Bitmap b = BitmapFactory.decodeStream(new FileInputStream(f));
            ImageView img=(ImageView)findViewById(R.id.imgPicker);
        img.setImageBitmap(b);
    } 
    catch (FileNotFoundException e) 
    {
        e.printStackTrace();
    }

}