コードからデフォルトのギャラリーを呼び出して、ユーザーが自分のギャラリーのすべての写真を表示して 1 つの写真を選択することは可能ですか。その結果、選択した画像のパスを取得して、それを処理できるようにする必要があります。
ありがとう
コードからデフォルトのギャラリーを呼び出して、ユーザーが自分のギャラリーのすべての写真を表示して 1 つの写真を選択することは可能ですか。その結果、選択した画像のパスを取得して、それを処理できるようにする必要があります。
ありがとう
以下のコードを使用して、Gallery を開始するためのインテントを作成して起動します
Intent pickPhoto = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(pickPhoto , 0);
onActivityResult(int requestCode, int resultCode, Intent data)
URIを取得するメソッドの行の下
Uri dataUri = data.getData(); //Image URI
この Image URI を小さなサイズの bitmap に変換するには、おそらく以下のメソッドが必要になるでしょう。ディスプレイに画像を表示すると、それがない場合と同様に、OOM 例外が発生する可能性があります
private Bitmap decodeUri(Uri selectedImage) throws FileNotFoundException {
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImage), null, o);
// The new size we want to scale to
final int REQUIRED_SIZE = 140;
// Find the correct scale value. It should be the power of 2.
int width_tmp = o.outWidth, height_tmp = o.outHeight;
int scale = 1;
while (true) {
if (width_tmp / 2 < REQUIRED_SIZE
|| height_tmp / 2 < REQUIRED_SIZE) {
break;
}
width_tmp /= 2;
height_tmp /= 2;
scale *= 2;
}
// Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
return BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImage), null, o2);
}