0

我需要将照片从 C++ 服务器发送到 android 手机我的照片是使用 open cv libray 加载的,我在 android 中收到它但我无法将它以位图形式显示在 android 手机中我的服务器代码看起来像这样

void sendMat(Mat m , SOCKET client) //send an Image to the cleint called client
char chNum[1];
chNum[0] = m.channels();
send(client , chNum , 1 , 0);
if(m.channels() == 1)
{
char *buf = new char[m.cols * m.rows];
for(int i = 0 ; i < m.rows ; i++)
    for(int j = 0 ; j < m.cols ; j++)
      buf[i*m.cols+j] = m.at<char>(i,j); 
for(int i = 0 ; i < m.cols * m.rows ; i++)
    cout << (int)buf[i] << endl;
send(client , buf , m.rows*m.cols , 0);

}
else  //m.channels == 3
{
    char *buf[3];
    for(int i = 0 ; i < 3 ; i++)
        buf[i] = new char[m.rows * m.cols];
    for(int i = 0 ; i < m.rows ; i++)
        for(int j = 0 ; j < m.cols ; j++)
        {
            buf[0][i*m.cols+j] = m.at<Vec3b>(i,j)[0];
            buf[1][i*m.cols+j] = m.at<Vec3b>(i,j)[1];
            buf[2][i*m.cols+j] = m.at<Vec3b>(i,j)[2];
        }
    send(client , buf [0], m.rows*m.cols , 0);
    send(client , buf [1], m.rows*m.cols , 0);
    send(client , buf [2], m.rows*m.cols , 0);


}

}

我的客户代码是这样的

client = new Socket("10.0.2.2" , 2222);
                    OutputStream out = client.getOutputStream();
                    InputStream in = client.getInputStream();
                    int img[] = recData(in , chN);
                    This.im = Bitmap.createBitmap(img, WIDTH, HEGIHT, Bitmap.Config.ARGB_8888);

我的问题是如何实现这个方法(recData)我尝试了很多方法但我失败了

4

0 回答 0