質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

0回答

723閲覧

画像一覧を表示して、その画像のファイルパスを渡したい。

jafirm

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2020/03/30 09:41

画像の一覧を表示して、その画像のファイルパスを
顔検出のメソッドに渡したいです。
しかし以下のエラーがでて、うまくいきません。
修正すべき部分があれば提案してください。
よろしくお願いします。

参考サイト
http://workpiles.com/2014/07/android-gallary-intent/
https://seesaawiki.jp/w/moonlight_aska/d/%b4%e9%a4%f2%b8%a1%bd%d0%a4%b9%a4%eb

2020-03-30 18:16:21.538 10387-10387/com.example.face_7 E/.example.face_: Unknown bits set in runtime_flags: 0x8000 2020-03-30 18:16:21.669 10387-10423/com.example.face_7 E/Perf: Fail to get file list com.example.face_7 2020-03-30 18:16:21.669 10387-10423/com.example.face_7 E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array 2020-03-30 18:16:21.669 10387-10423/com.example.face_7 E/Perf: Fail to get file list com.example.face_7 2020-03-30 18:16:21.669 10387-10423/com.example.face_7 E/Perf: getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array

画像のファイルパスを取得するメソッドです。

public class MainActivity extends AppCompatActivity { private final int MAX_FACE_NUM = 3; private FaceDetector.Face[] mFaces = new FaceDetector.Face[MAX_FACE_NUM]; private Bitmap mBmpRes = null; private ImageView mView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startActivity(); } public void startActivity() { if (Build.VERSION.SDK_INT < 19) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/jpeg"); startActivityForResult(Intent.createChooser(intent, "Pick a source"), 0); } else { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/jpeg"); startActivityForResult(Intent.createChooser(intent, "Pick a source"), 1); } } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) return; if (requestCode == 0) { String[] columns = {MediaStore.MediaColumns.DATA}; Cursor cursor = getContentResolver().query(data.getData(), columns, null, null, null); if (cursor.moveToFirst()) { ReadPicture(cursor.getString(0)); //ここで渡します! } } else if (requestCode == 1) { String id = DocumentsContract.getDocumentId(data.getData()); String selection = "_id=?"; String[] selectionArgs = new String[]{id.split(":")[1]}; Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.MediaColumns.DATA}, selection, selectionArgs, null); if (cursor.moveToFirst()) { ReadPicture(cursor.getString(0)); //ここで渡します! } cursor.close(); } }

顔検出のメソッドです。

private void ReadPicture(String paths) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.RGB_565; Bitmap bmpOrg = BitmapFactory.decodeFile(paths, options); mBmpRes = bmpOrg.copy(Bitmap.Config.RGB_565, true); if (bmpOrg != null) { detectFace(bmpOrg); mView = (ImageView) findViewById(R.id.imageView); mView.setImageBitmap(mBmpRes); } } private void detectFace(Bitmap img) { FaceDetector detector = new FaceDetector(img.getWidth(), img.getHeight(),MAX_FACE_NUM); int num = detector.findFaces(img, mFaces); for (int i = 0; i < num; i++) { PointF mid = new PointF(); mFaces[i].getMidPoint(mid); setMark(mFaces[i]); } } private void setMark(FaceDetector.Face face) { Canvas canvas = new Canvas(mBmpRes); Paint paint = new Paint(); paint.setColor(Color.RED); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(5); PointF mid = new PointF(); face.getMidPoint(mid); canvas.drawCircle(mid.x, mid.y,face.eyesDistance(), paint); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問