首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android位图8位像素而不是32位像素?

Android位图8位像素而不是32位像素?
EN

Stack Overflow用户
提问于 2013-05-23 01:12:58
回答 1查看 4.1K关注 0票数 3

我有一些原始图片文件(灰度感应器数据),其中每个字节都是一个像素灰度值。所以所有的像素都是8位的值。在我的本地代码中,我处理(原始)字节(图像处理),之后,我使用DirectByteBuffer将字节数组传递给Java-VM (Java-NIO)。

在我的Java代码中,我想在ImageView中绘制图像数据。因此,我使用位图将图像数据放入其中。下面是我在Java端所做的事情:

代码语言:javascript
复制
// getLeftImageData() is the native function that returns the
// DirectByteBuffer with the imagedata to be drawn. Each Byte
// is one pixel value.
IntBuffer leftImageData = getLeftImageData().asIntBuffer();
int[] arrayL = new int[leftImageData.remaining()];
leftImageData.get(arrayL);
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmpL = Bitmap.createBitmap(1920/4, 1080/4, conf);
bmpL.setPixels(arrayL, 0, 1920, 0, 0, 1920/4, 1080/4);
ImageView imageL = (ImageView)findViewById(R.id.imageLeft);
imageL.setImageBitmap(bmpL);

这就是我的问题。到目前为止一切正常,但是:setPixels()方法需要一个整型数组,其中每个整型值必须是一个像素值。因此,我将DirectByteBuffer看作一个IntBuffer (asIntBuffer()-method)。但这并不是我真正想要的,因为现在4个像素(=4个字节)被放在一起构成一个整数像素值。你明白我的意思吗?没有办法使用字节数组来设置位图的像素。您只能传递整数数组。因此,我将不得不修改我的字节数组(当然,将它增加4倍于原始大小),以使我的8位值采用32位整数格式。

你知道如何在安卓ImageView中显示图像数据,而不需要修改字节数组吗?也许有一种方法不使用位图或其他东西..?我是android btw的新手。

EN

回答 1

Stack Overflow用户

发布于 2013-05-23 02:28:20

看看这里:Render a byte[] as Bitmap in Android,并根据你的问题调整它。

以防万一,ARGB_8888表示每个通道(阿尔法、红色、绿色、蓝色)1个像素的1个字节,并且令人欣慰地等于32位。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16697817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档