Android位图像素取决于密度?

Android位图像素取决于密度?,android,bitmap,android-2.3-gingerbread,Android,Bitmap,Android 2.3 Gingerbread,代码的权利。给定 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId); Drawable drawable = getResources().getDrawable(resId); 我明白了 虽然实际图像是6x6像素。关键是密度为240,因此,刻度为1.5,默认值为160。这本身并不是一个问题,但是bitmap.getPixel(x,y)也适用于放大的尺寸 设置位图的密度似乎没有什么区别。我应该如何查询图像中实

代码的权利。给定

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId);
Drawable drawable = getResources().getDrawable(resId);
我明白了

虽然实际图像是6x6像素。关键是密度为
240
,因此,刻度为
1.5
,默认值为160。这本身并不是一个问题,但是
bitmap.getPixel(x,y)也适用于放大的尺寸

设置位图的密度似乎没有什么区别。我应该如何查询图像中实际位置的像素?我宁愿不要用密度来划分一切(有时甚至不可能)


首先,请对这里发生的事情发表几点评论。你得到的位图实际上是重采样的;其像素数据用于9x9图像。方法
bitmap.getWidth()
不受调用
bitmap.setDensity()
的影响

要在加载位图的同时防止Android框架为您重新采样位图,请创建一个实例并设置为
false
,然后将其传递给decodeResource():


请注意,UI中使用的是重采样版本(除非您明确地解决了这个问题),因此如果您想执行
bitmap.getPixel(x,y)
在UI中绘制的位图上,您不应使用
inScaled=false

首先对此处发生的事情进行一些注释。你得到的位图实际上是重采样的;其像素数据用于9x9图像。方法
bitmap.getWidth()
不受调用
bitmap.setDensity()
的影响

要在加载位图的同时防止Android框架为您重新采样位图,请创建一个实例并设置为
false
,然后将其传递给decodeResource():

请注意,UI中使用的是重采样版本(除非您明确地解决了这个问题),因此如果您想执行
bitmap.getPixel(x,y)
在UI中绘制的位图上,不应使用
inScaled=false

bitmap.getWidth() == drawable.getIntrinsicWidth() == 9
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId, options);
// Now bitmap.getWidth() == 6