gpt4 book ai didi

Android 位图 getPixel 取决于密度?

转载 作者:行者123 更新时间:2023-12-05 00:17:46 24 4
gpt4 key购买 nike

直接看代码。鉴于

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId);
Drawable drawable = getResources().getDrawable(resId);

我明白了

bitmap.getWidth() == drawable.getIntrinsicWidth() == 9

尽管实际图像是 6x6 像素。关键是密度为 240,因此比例为 1.5DENSITY_DEFAULT = 160。这本身并不是一个问题,但 bitmap.getPixel(x, y); 也适用于放大的尺寸。

设置位图的密度似乎没有什么区别。我应该如何查询图像中真实位置的像素?我宁愿不将所有东西除以密度(通常甚至不可能)。

谢谢

最佳答案

首先对这里发生的事情发表一些评论。你得到的Bitmap实际上是重新采样的;它的像素数据适用于 9x9 图像。 bitmap.getWidth() 方法不受调用 bitmap.setDensity() 的影响。

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

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

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

关于Android 位图 getPixel 取决于密度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com