Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Как CImage передать по сети


Автор: yurec 13.1.2009, 14:07
Привет!

Стоит задача передавать по сети изображения ( примерно 30 джпегов  по 200-300кб в секунду ).
Хочеться ето сделать еффективно и красиво.
Вот думаю над таким вариантом:

Код


//Save
{
    CSocket sockSrvr;
    sockSrvr.Create(9999,SOCK_STREAM,_T("127.0.0.1"));
    sockSrvr.Listen();

    CSocket sockRecv; 
    sockSrvr.Accept( sockRecv ); 

    CSocketFile file(&sockRecv);
    CArchive ar(&file,CArchive::store);
    CArchiveStream stream(&ar);
    CImage img;
    HRESULT hr_res = img.Load(_T("D:\\Documents and Settings\\zhacun\\Desktop\\CreateImagesTest\\clock01.jpg"));
    if (S_OK != hr_res)
      {
      DWORD err = GetLastError();
      ASSERT(FALSE);
      }

    hr_res = img.Save(&stream,Gdiplus::ImageFormatJPEG);
    if (S_OK != hr_res)
      {
      DWORD err = GetLastError();
      ASSERT(FALSE);
      }
 }


Код

//Load
{
  CSocket sock;
  sock.Create();
  UINT res = sock.Connect(_T("127.0.0.1"),9999);
  if (0 == res)
    {
    DWORD nError = GetLastError();
    ASSERT(FALSE);
    }

  CSocketFile file(&sock);
  CArchive ar(&file,CArchive::load);
  CArchiveStream stream(&ar);
  CImage img;

  HRESULT hr_res = img.Load(&stream);//go into gdiplusbitmap.h next
  if (E_FAIL == hr_res)
    {
    DWORD err = GetLastError();
    ASSERT(FALSE);
    }
 }

//gdiplusbitmap.h

inline 
Bitmap::Bitmap(
    IN IStream *stream, 
    IN BOOL useEmbeddedColorManagement
    )
{
    GpBitmap *bitmap = NULL;

    if(useEmbeddedColorManagement)
    {
        lastResult = DllExports::GdipCreateBitmapFromStreamICM(stream, &bitmap);
    }
    else
    {
        lastResult = DllExports::GdipCreateBitmapFromStream(stream, &bitmap); 
    //returns invalidParameter here, output tells: "Warning - Attempt made to seek on a CSocketFile"
    }

    SetNativeImage(bitmap);
}



Подскажите в чём проблема, пожалуйста. Или предложите альтернативу. 

Спасибо.

Автор: yurec 14.1.2009, 11:19
Вопрос решён, коментарии в другой ветке (мфц), наверное тему лучше удалить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)