ذكري المظهر.الحصول على حجم الصورة من معرف المورد الخاص بها

StackOverflow https://stackoverflow.com//questions/9655534

سؤال

هذا جزء من نشاطي:

private ImageView mImageView;
private int resource;

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  resource = getIntent().getIntExtra("res", -1);

  Matrix initMatrix = new Matrix();

  mImageView = new ImageView(getApplicationContext());
  mImageView.setScaleType( ImageView.ScaleType.MATRIX );
  mImageView.setImageMatrix( initMatrix );
  mImageView.setBackgroundColor(0);
  mImageView.setImageResource(resource);
}

أحاول عرض صورة داخل ImageView باستخدام مصفوفة كنوع مقياس (أريد إضافة اللمس المتعدد لاحقًا).ولكن قبل أن يبدأ المستخدم بالتفاعل، أريد أن يتم توسيط الصورة وملاءمتها داخل ImageView.لقد وجدت بالفعل إجابات بخصوص كيفية حلها ولكن هناك مشكلة واحدة بالنسبة لي:لجعل الصورة مركزية باستخدام المصفوفة، أحتاج إلى معرفة عرضها وارتفاعها.هل هناك أي طريقة للحصول على حجم الصورة عندما يكون كل ما لديك هو الموارد كثافة العمليات ?

هل كانت مفيدة؟

المحلول

يستخدم BitmapFactory.decodeResource للحصول على كائن نقطي للمورد، ومن ثم من الصورة النقطية يمكنك بسهولة استرداد عرض/ارتفاع الصورة باستخدام getHeight و getWidth

أيضا لا تنسى أن إعادة التدوير الصورة النقطية الخاصة بك

يحرر:

بهذه الطريقة سوف تحصل على null الصورة النقطية كإخراج، ولكن سيتم تعيين BitmapFactory.Options مع الارتفاع للصورة النقطية.لذلك، في هذه الحالة، لا تحتاج إلى إعادة تدوير الصورة النقطية

BitmapFactory.Options dimensions = new BitmapFactory.Options(); 
dimensions.inJustDecodeBounds = true;
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap, dimensions);
int height = dimensions.outHeight;
int width =  dimensions.outWidth;

نصائح أخرى

لمن لم يقرأ تعليق dmon.يبدو الكود للقيام بذلك كما يلي:

final Options opt = new BitmapFactory.Options();
opt.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.drawable.your_photo, opt);

opt.outHeight; // height of resource
opt.outWidth; // width of resource
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top