スマホのギャラリーから画像を取得して、その画像を表示させるアプリを作ったのですが、当然ですが、画面遷移などを行うと画像は無くなってしまいます。
そこで、いろいろ調べた結果、入れるべきプログラムは見つかったのですが、使い方がわかりません。
今できているプログラムは、以下です。
public class MainActivity extends AppCompatActivity { private static final int RESULT_PICK_IMAGEFILE = 1000; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView)findViewById(R.id.image_view); findViewById(R.id.button2).setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); startActivityForResult(intent,RESULT_PICK_IMAGEFILE); } }); } @Override public void onActivityResult(int requestCode , int resultCode , Intent resultData) { super.onActivityResult(requestCode, resultCode, resultData); if (requestCode == RESULT_PICK_IMAGEFILE && resultCode == RESULT_OK) { Uri uri = null; if (resultData != null) { uri = resultData.getData(); try { Bitmap bmp = getBitmapFromUri(uri); imageView.setImageBitmap(bmp); } catch (IOException e) { e.printStackTrace(); } } } } private Bitmap getBitmapFromUri(Uri uri) throws IOException { ParcelFileDescriptor parcelFileDescriptor = getContentResolver().openFileDescriptor(uri, "r"); FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor); parcelFileDescriptor.close(); return image; } }
付け加えたいプログラムは、こちらです。
//画像の保存 FileOutputStream out = null; try { // openFileOutputはContextのメソッドなのでActivity内ならばthisでOK out = this.openFileOutput("image.png", Context.MODE_PRIVATE); image.compress(Bitmap.CompressFormat.PNG, 100, out); } catch (FileNotFoundException e) { // エラー処理 } finally { if (out != null) { out.close(); out = null; } }
//保存した画像の読み込み InputStream input = null; try { input = this.openFileInput("image.png"); } catch (FileNotFoundException e) { // エラー処理 } Bitmap image = BitmapFactory.decodeStream(input);
//保存した画像の削除 this.deleteFile("image.png");
使い方や、付け加える場所など詳しく明記していただけると助かります。
よろしくお願いいたします。
あなたの回答
tips
プレビュー