1つのXMLでImageviewとButtonを使用しており、webServerからURLとして画像を取得し、ImageViewに表示しています。ボタン(保存)をクリックした場合、その特定の画像をSDカードに保存する必要があります。これを行う方法?
注:現在の画像を保存する必要があります。
まず、ビットマップを取得する必要があります。すでにオブジェクトビットマップとして持つことも、次のように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"/>
考えられる解決策は
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();
}
}