我需要将照片从 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)我尝试了很多方法但我失败了