として表示するために、ARGB byte
配列をBitmap
にデコードしようとしています。 BitmapFactory
のdecodeByteArray()
とdecodeStream()
を使用しようとしましたが、両方向がヌルの場合はBitmap
となります。BitmapFactoryのdecodeByteArrayとdecodeStreamがNULLを返します
しかし、createBitmap()
と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));
}
サイズのバイト配列である。しかし、後に道を私はbyte
配列からsetPixels()
ための整数配列を作成する必要があるので、私はdecodeByteArray()
またはdecodeStream()
を使用して、これを達成するために必要な、
データ非効率的です。 私が実装しようとしているのはビデオプレーヤーなので、毎秒約15フレーム/画像を表示する必要があります。
これで私を助けてくれる人がいますが、 事前に感謝します
素早く反応してくれてありがとうPeter Knego。しかし私のビデオレンダリングコードは完成して動作していますが、このsetPixels関数のためにビデオフレームイメージのレンダリングが遅くなるという問題があります。 int i = 0、j = 0;データ[i + 1]、データ[i + 2]、データ[i + 3]);(i
Siji
とbyte []はありません – Siji