teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

ファイルの保存を追記

2020/04/17 20:43

投稿

tukim
tukim

スコア8

title CHANGED
@@ -1,1 +1,1 @@
1
- AndroidStudioでギャラリーから取得した画像をopencv読み込みたい
1
+ AndroidStudioでギャラリーから取得した画像をファイル保存しopencv読み込みたい
body CHANGED
@@ -1,12 +1,13 @@
1
- ### 前提・実現したいこと
1
+ ---### 前提・実現したいこと
2
2
 
3
3
  アプリ開発初心者です。
4
4
  MainActivityから画面遷移したのちに
5
- https://qiita.com/yukiyamadajp/items/137d15a4e65ed2308787
5
+ [リンク内容](https://qiita.com/yukiyamadajp/items/137d15a4e65ed2308787)
6
6
  こちらの記事を参考にギャラリーから画像を取得し標示することはできました。
7
7
  そのあとにopencvに画像を読み込み画像処理をしたいと思っているのですが
8
8
  mat_src = Imgcodecs.imread()
9
- この際のimreadにファイル名を入れると思うのですが取得した画像のファイル名がわかりません。
9
+ この際のimreadにファイル名を入れると思うのですが取得した画像のファイル名がわかりません。 mbitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
10
+ このmbitmapの部分がどうしてもエラーになってしまいます。
10
11
 
11
12
  ### 該当のソースコード
12
13
 
@@ -15,11 +16,14 @@
15
16
 
16
17
  import android.content.ContentValues;
17
18
  import android.content.Intent;
19
+ import android.graphics.Bitmap;
18
20
  import android.media.MediaScannerConnection;
19
21
  import android.net.Uri;
20
22
  import android.os.Build;
21
23
  import android.os.Bundle;
24
+ import android.os.Environment;
22
25
  import android.provider.MediaStore;
26
+ import android.util.Log;
23
27
  import android.view.View;
24
28
  import android.widget.Button;
25
29
  import android.widget.ImageView;
@@ -27,6 +31,11 @@
27
31
  import org.opencv.core.Mat;
28
32
  import org.opencv.imgcodecs.Imgcodecs;
29
33
 
34
+ import java.io.File;
35
+ import java.io.FileOutputStream;
36
+ import java.text.SimpleDateFormat;
37
+ import java.util.Date;
38
+
30
39
  public class SettingActivity extends AppCompatActivity {
31
40
 
32
41
  private static final int REQUEST_CHOOSER= 1000;
@@ -100,15 +109,42 @@
100
109
  ImageView imageView = (ImageView)findViewById(R.id.imageView);
101
110
  imageView.setImageURI(resultUri);
102
111
 
112
+
113
+
114
+
115
+
116
+ }
117
+
118
+ try {
119
+ // sdcardフォルダを指定
120
+ File root = Environment.getExternalStorageDirectory();
121
+
122
+ // 日付でファイル名を作成 
123
+ Date mDate = new Date();
124
+ SimpleDateFormat fileName = new SimpleDateFormat("yyyyMMdd_HHmmss");
125
+
126
+ // 保存処理開始
127
+ FileOutputStream fos = null;
128
+ fos = new FileOutputStream(new File(root, fileName.format(mDate) + ".jpg"));
129
+
130
+ // jpegで保存
131
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
132
+
133
+ // 保存処理終了
134
+ fos.close();
135
+
103
136
  //OpenCVに読み込み
104
137
  Mat mat_src = new Mat();
105
- mat_src = Imgcodecs.imread()
138
+ mat_src = Imgcodecs.imread(fileName.format(mDate) + ".jpg");
106
139
 
140
+ } catch (Exception e) {
141
+ Log.e("Error", "" + e.toString());
142
+ }
107
143
 
108
- }
144
+ }
109
- }
145
+
110
146
  ```
111
147
 
112
148
  ### 試したこと
113
149
 
114
- ファイル名が入るということString型String[]{resultUri.getPath()},をれてみましたがだめでした。
150
+ ファイル名には日付作られたもる様にしましたが、保存処理どうてもエラーが出てしまいました。