C++ クライアントからバイト配列を受信するサーバーを作成しました。クライアントはイメージを uchar 配列 (opencv を使用) として送信し、アンドロイドではデータを正しく受信しています。Android のサーバーはデータをバイト配列に格納するため、このバイト配列をビットマップに変換する必要があります。しかし、使用後に null Bitmap を取得していますBitmapFactory.decodeByteArray
。
これは、データを受信してバイト配列に格納するサーバーコードです
class imageReciver extends Thread {
public static byte imageByte[];
private ServerSocket serverSocket;
InputStream in;
int imageSize=921600;//expected image size 640X480X3
public imageReciver(int port) throws IOException{
serverSocket = new ServerSocket(port);
}
public void run()
{
Socket server = null;
server = serverSocket.accept();
in = server.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte buffer[] = new byte[1024];
int remainingBytes = imageSize; //
while (remainingBytes > 0) {
int bytesRead = in.read(buffer);
if (bytesRead < 0) {
throw new IOException("Unexpected end of data");
}
baos.write(buffer, 0, bytesRead);
remainingBytes -= bytesRead;
}
in.close();
imageByte = baos.toByteArray();
baos.close();
server.close();
//Here conver byte array to bitmap
Bitmap bmp = BitmapFactory.decodeByteArray(imageByte, 0,imageByte.length);
return;
}
}