#android #android-bitmap
#Android #android-bitmap
Вопрос:
Я получаю растровое изображение из галереи, используя protected void onActivityResult . Теперь я хочу получить информацию об этом растровом изображении , чтобы использовать ее в другом методе в том же действии . Это мой код: я получаю растровое изображение из галереи, используя protected void onActivityResult . Теперь я хочу получить информацию об этом растровом изображении , чтобы использовать ее в другом методе в том же действии . Это мой код:
public class MainActivity extends AppCompatActivity {
private static final int selected_image = 1;
Bitmap bitmap;
ImageView imagev;
public static int n, m;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imagev = findViewById(R.id.imagev);
}
public void btnselectimage(View view) {
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, selected_image);
// I want get the width and height of this image here;
System.out.println("width=" n);
System.out.println("height=" m);
}
// @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case selected_image:
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
bitmap = BitmapFactory.decodeFile(picturePath);
n = bitmap.getWidth();
m = bitmap.getHeight();
// Drawable d = new BitmapDrawable(bitmap);
imagev.setImageBitmap(bitmap);
}
break;
}
}
}
Ответ №1:
Bitmap bitmap;
if (mImageViewer.getDrawable() instanceof BitmapDrawable) {
bitmap = ((BitmapDrawable) mImageViewer.getDrawable()).getBitmap();
} else {
imageView.invalidate();
BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
bitmap = drawable.getBitmap();
}
Комментарии:
1. что означает mImageViewer ?
2. @sudadnajim свой идентификатор просмотра изображения.
Ответ №2:
После того, как вы установите bitmap в значение image, вы можете прикрепить растровое изображение к тому же самому ImageView
другим способом, подобным этому:
Bitmap bitmap = ((BitmapDrawable)imagev.getDrawable()).getBitmap();
Комментарии:
1. я не могу получить информацию о растровом изображении за пределами ** onActivityResult **, не могли бы вы обновить мой код, пожалуйста?
2. Я обновил свой ответ. Изображение на самом деле является imageview в вашем XML-файле.
3. @sudadnajim У вас уже есть растровое изображение в глобальной переменной. Вы можете использовать ее в любом месте этого действия. Что вы имеете в виду, говоря, что «не можете получить информацию о растровом изображении за пределами ** onActivityResult **» . Используйте переменную «bitmap» вне любого места, чтобы получить к ней доступ.
4. @Ravi Когда я попытался получить ширину и получить высоту внутри *onActivityResult , результат был правильным, но когда я попробовал то же самое * снаружи onActivityResult , результат был нулевым.
5. @sudadnajim Пожалуйста, обновите код вашего вопроса, чтобы помочь вам