And*_*Dev 5 java android multidimensional-array android-bitmap
我需要在我的Android应用程序中将整个Bitmap对象读取为二维整数数组。
目前,我正在一次分别读取每个像素,如下所示:
for (int y = 0; y < coverImageHeight; y++)
{
for (int x = 0; x < coverImageWidth; x++)
{
coverImageIntArray[x][y] = coverImageBitmap.getPixel(x, y);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这在大图像上会花费很长时间(大约15秒)。
有没有一种方法可以一次完成所有操作以提高效率?
我不熟悉Android开发人员,但是通常对于图像对象,您只能获取引用或某些底层缓冲区的副本。该缓冲区通常为1D,但是您应该可以轻松地对其进行隐蔽处理。在您的情况下,要获取像素,有一个看起来很完美的功能getPixels。
int[] coverImageIntArray1D = new int[coverImageWidth * coverImageHeight]
coverImageBitmap.getPixels(coverImageIntArray1D, 0, coverImageWidth,
0, 0, coverImageWidth, coverImageHeight)
// coverImageIntArray1D should now contain the entire image's pixels
Run Code Online (Sandbox Code Playgroud)
仅供参考,您可以使用2D索引索引到这种类型的1D数组中:
int pixel = coverImageIntArray1D[x + y*coverImageWidth]
Run Code Online (Sandbox Code Playgroud)
这将为您提供像素[x][y]。因此,您仍然可以2D方式使用它,而无需执行低效的转换。
| 归档时间: |
|
| 查看次数: |
1601 次 |
| 最近记录: |