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