3

TCPソケットを介してARGB値のByteArrayを送信しているC++QTアプリケーションがあります。画像は100x100です。問題は、ByteArrayを読み取ったときに、画像を正しく表示できないように見えることです。私はさまざまな方法を試しましたが、これが私に最も近いAS3コードです。

bitmapData.lock();
for(var x = 0;x<100; x++){
  for(var y = 0;y<100; y++){
    alphaValue = byteArray.readUnsignedByte();
    redValue = byteArray.readUnsignedByte();
    greenValue = byteArray.readUnsignedByte();
    blueValue = byteArray.readUnsignedByte();
    color = redValue << 16 | greenValue << 8 | blueValue;
    bitmapData.setPixel(y,x,color);
  }
}
bitmapData.unlock();

アルファ値をどうすればよいかわからないため、現時点ではアルファ値を使用していません。Qtは、「画像は32ビットRGB形式(0xffRRGGBB)を使用して保存されます」と述べています。私も使ってみreadUnsignedInt()ましたが、うまくいきませんでした。

これが私が送信しようとしているものと画面に表示されているものです。

送信:ここに画像の説明を入力してくださいフラッシュで受信ここに画像の説明を入力してください

近いですが、ちょうどいいわけではありません。誰かが私が間違っているかもしれないことを知っていますか?

4

1 に答える 1

4

readUnsignedIntへの複数の呼び出しの代わりに使用する方がはるかに簡単readByteです。次に、bitmap.setPixel32の代わりに使用しsetPixelます。そうすれば、値を分解して再構築する必要がありません。

byteArray.endian = Endian.LITTLE_ENDIANエンコード方法によっては、エンディアン(例)を切り替える必要がある場合もあります。手元にあるのがどちらの方向か思い出せないので、初めてうまくいかない場合は試してみてください。

于 2012-07-21T15:10:40.350 に答える