我用这个回调函数能到每一帧采集到的图像,图像数据存在LPVIDEOHDR 类型的变量lpVHdr-〉lpData对象中,LPVIDEOHDR 是一个结构体,lpData是LpBYTE类型的我想用SOCKET的函数sendto发送出去,
int sendto(SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen);这是sendto的定义,第二个参数类型是char*,可我得到的图像数据是LpBYTE类型的,怎么办啊?我用强制转换发的是乱码,请高手指教。

解决方案 »

  1.   

    HEHE,这个不是乱码,直接转换就可以了.
    之所以不对,是因为这个数据不包括图象头,你接收方必须有图像头BITMAPINFO,这个指针指的纯粹是图象的数据.转一段我写的给你看.
    CMyMultTrans* pThis = (CMyMultTrans*) capGetUserData(hWnd);
    if(pThis != NULL)
    {
    Bitmap* pTmpBitmap = Bitmap::FromBITMAPINFO(&pThis->m_BmpInfo, lphdr->lpData);
    BYTE* pFrameData = (BYTE*) pThis->m_FrameBuf.Tail;
    if(!pThis->m_SendImage.MultTranImageData(pFrameData, pTmpBitmap))
    {
    delete pTmpBitmap;
    PostMessage(hWnd, WM_CLOSE, 0, 0);
    return FALSE;
    }
    pFrameData += *((DWORD*) pFrameData);
    delete pTmpBitmap; pThis->m_FrameBuf.TailLength = pFrameData - (BYTE*) (pThis->m_FrameBuf.Tail);
    if(pThis->m_FrameBuf.TailLength > sizeof(DWORD))
    {
    //发送数据
    if(!TransmitFile(pThis->m_Socket, NULL, 0, 
    pThis->m_FrameBuf.TailLength, 
    NULL, &pThis->m_FrameBuf, TF_USE_KERNEL_APC))
    {
    PostMessage(hWnd, WM_CLOSE, 0, 0);
    return FALSE;
    }
    }
    }
      

  2.   

    shesh(无所谓) 我还有一些问题不太明白,想请教一下,32152551这是我的qq号,能加我吗?