我正在尝试将ARGB byte
数组解码为Bitmap
,以将其显示为ImageView
。
我尝试使用BitmapFactory
的{{1}}和decodeByteArray()
,但两种方式都将null设为decodeStream()
。
但是当我使用Bitmap
和createBitmap()
创建位图时,它完美无缺。这是工作代码。
data 是大小为setPixels()
imageWidth*imageHeight*4
但是我需要使用int[] pixels=new int[imageWidth*imageHeight];
int i=0,j=0;
while (i<imageWidth*imageHeight*4) {
pixels[j]= bytesToInt(data[i], data[i+1], data[i+2],data[i+3]);
i += 4;
j++;
}
Bitmap bitmap=Bitmap. createBitmap( imageWidth,imageHeight,Bitmap.Config .ARGB_8888)
bmpf.setPixels(pixels, 0, imageWidth , 0, 0, imageWidth, imageHeight);
//---------------------- definition of bytesToInt()
int bytesToInt(byte b1,byte b2,byte b3,byte b4)
{
return (((b1& 0xff)<<24)+((b2 & 0xff)<<16)+((b3&0xff)<<8)+(b4&0xff));
}
或decodeByteArray()
来实现这一点,因为后来我需要从decodeStream()
数组为setPixels()
创建整数数组,这是低效的。
我想要实现的是一个视频播放器,因此它需要每秒显示大约15帧/图像。
希望有人可以帮助我。 提前致谢
答案 0 :(得分:0)
视频电视播放视频流,即视频帧流。 Bitmap.decodeStream
需要一个图像字节流,即JPEG或PNG格式的字节流。
您的字节流格式是否正确,即jpeg或png?