web-dev-qa-db-ja.com

ボタンのSDカードに画像を保存する方法クリックandroid

1つのXMLでImageviewとButtonを使用しており、webServerからURLとして画像を取得し、ImageViewに表示しています。ボタン(保存)をクリックした場合、その特定の画像をSDカードに保存する必要があります。これを行う方法?

注:現在の画像を保存する必要があります。

8
Kalai Selvan.G

まず、ビットマップを取得する必要があります。すでにオブジェクトビットマップとして持つことも、次のようにImageViewから取得することもできます。

    BitmapDrawable drawable = (BitmapDrawable) mImageView1.getDrawable();
    Bitmap bitmap = drawable.getBitmap();

次に、次のようなSDカードからディレクトリ( ファイル オブジェクト)にアクセスする必要があります。

    File sdCardDirectory = Environment.getExternalStorageDirectory();

次に、画像ストレージ用の特定のファイルを作成します。

    File image = new File(sdCardDirectory, "test.png");

その後、そのメソッドのおかげでビットマップを書く必要があります compress 次のように:

    boolean success = false;

    // Encode the file as a PNG image.
    FileOutputStream outStream;
    try {

        outStream = new FileOutputStream(image);
        bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream); 
        /* 100 to keep full quality of the image */

        outStream.flush();
        outStream.close();
        success = true;
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

最後に、必要に応じてブール結果を処理します。といった:

    if (success) {
        Toast.makeText(getApplicationContext(), "Image saved with success",
                Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(getApplicationContext(),
                "Error during image saving", Toast.LENGTH_LONG).show();
    }

マニフェストに次の権限を追加することを忘れないでください。

<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE"/>
50
Romain R.

考えられる解決策は

Android-ダウンロードした画像をURLからSDカードに保存

Bitmap bitMapImg;
void saveImage() {
        File filename;
        try {
            String path = Environment.getExternalStorageDirectory().toString();

            new File(path + "/folder/subfolder").mkdirs();
            filename = new File(path + "/folder/subfolder/image.jpg");

            FileOutputStream out = new FileOutputStream(filename);

            bitMapImg.compress(Bitmap.CompressFormat.JPEG, 90, out);
            out.flush();
            out.close();

            MediaStore.Images.Media.insertImage(getContentResolver(), filename.getAbsolutePath(), filename.getName(), filename.getName());

            Toast.makeText(getApplicationContext(), "File is Saved in  " + filename, 1000).show();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
5
prayagupd