gpt4 book ai didi

android - Android的Bitmap类的getPixels()的使用及使用方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:30 24 4
gpt4 key购买 nike

我正在尝试在 Android 中进行一些图像处理。我需要获取位图的一大块像素信息。所以我尝试使用 Bitmap 类方法之一 getPixels()。但是,我似乎没有正确使用它,或者我误解了该方法行为的唯一目的。

例如,我正在执行以下操作,以便从任意位置(位图坐标)x、y 获取位图的 10 x 10 区域的像素信息。

Bitmap bitmap = BitmapFactory.decodeFile(filePath);
int[] pixels = new int[100];
bitmap.getPixels(pixels, 0, bitmap.getWidth(), x, y, 10, 10);

我收到 ArrayIndexOutOfBoundsException。我一直在谷歌搜索,看看我做错了什么,但我一无所知。大多数关于getPixels()使用的例子或问题通常是针对提取整个图像的像素信息的情况。因此int数组的大小通常为bitmap.getWidth()*bitmap.getHeight(),x、y值为0、0,width、height为位图的宽高。

Bitmap 的 getPixels() 不是为我的使用目的而设计的吗(获取位图子区域的一大块像素信息)?还是我使用不当?有没有其他方法可以做到这一点,也许使用不同的类?

如果有人对此有话要说,我将不胜感激。谢谢。

最佳答案

getPixels() 返回源位图的完整 int[] 数组,因此必须使用与源位图的高 x 宽相同的长度进行初始化。

像这样使用,bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, 10, 10); 实际上是从位图中抓取所需的像素,并填充数组的其余部分为 0。因此,对于 100 x 10 位图的 10 x 10 子集,从 0,0 开始,前 100 个值将是所需的 int 值,其余将为 0。

您总是可以尝试使用 Bitmap.createBitmap() 创建您的子集位图,然后在您的新位图上使用 getPixels() 来获取完整的数组。

关于android - Android的Bitmap类的getPixels()的使用及使用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13444185/

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