图像的长度和宽度加倍,为什么?

Being double the length and width of the image, why?

我有这个代码:

BitmapDrawable bd = (BitmapDrawable)this.GetDrawable(Resource.Drawable.add1);
int height = bd.Bitmap.Height;
int width = bd.Bitmap.Width;
Toast.MakeText(this, width.ToString() + "  " + height.ToString(), ToastLength.Long).Show();

add1.png宽高是55*55像素,Toast显示110*110像素,为什么?

此问题是由设备的分辨率引起的。 bitmap.Width返回的值会根据不同的dpi进行调整,不同机型这个dpi可能不一样。如果设备有更高的分辨率,这里可能会打印更多的数字。

要获得图像文件的原始大小,您需要将大小除以 dpi 值。

var density = Resources.DisplayMetrics.Density;

BitmapDrawable bd = (BitmapDrawable)this.GetDrawable(Resource.Drawable.test);
var the_original_height = bd.Bitmap.Height / density;
var the_orignial_width = bd.Bitmap.Width / density;

Toast.MakeText(this, the_original_height.ToString() + "*" + the_original_height.ToString(), ToastLength.Long).Show();