您的位置:程序门 -> vc/mfc -> 网络编程



我想在内存中将dib转化成jpeg通过网络发出去,不知有什么办法?(分不多了……)


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


我想在内存中将dib转化成jpeg通过网络发出去,不知有什么办法?(分不多了……)[已结贴,结贴人:holpfalcon]
发表于:2007-04-23 11:50:48 楼主
不想弄成文件形式发出去,那样太麻烦了,想在内存中将dib转换为jpeg然后通过网络发出去,哪位有相关的资料?谢谢大家,帮帮忙,毕业设计急用。(vc中用)
发表于:2007-04-23 12:48:381楼 得分:10
hwnd   hdeskwnd   =   ::getdesktopwindow();//获得屏幕的hwnd.
hdc   hscreendc   =   ::getdc(hdeskwnd);       //获得屏幕的hdc.
hdc   memdc   =   ::createcompatibledc(hscreendc);
rect   rect;  

::getwindowrect(hdeskwnd,&rect);

hbitmap   hbitmap   =   ::createcompatiblebitmap(hscreendc,rect.right,rect.bottom);
hgdiobj   holdbmp   =   ::selectobject(memdc,hbitmap);
::bitblt(memdc,0,0,rect.right,rect.bottom,hscreendc,rect.left,rect.top,srccopy);
hbitmap=(hbitmap)::selectobject(memdc,holdbmp);

m_deskimage.attach(hbitmap);
istream*   pstmimage   =   null;

hglobal   hmembmp   =   globalalloc(gmem_moveable,0);//可移动的缓冲区
if   (hmembmp   ==   null)   return   null;
createstreamonhglobal(hmembmp,   false,   &pstmimage);//将内存区b作为流的起始
if   (pstmimage   ==   null)

{
globalfree(hmembmp);
messagebox( "为空 ");
return   null;
}
m_deskimage.save(pstmimage,gdiplus::imageformatjpeg);

byte*   pbybmp   =   (byte   *)globallock(hmembmp);//得到缓冲区的起始地址

//cfile   mfile( "234.jpg ",cfile::modecreate ¦cfile::modewrite ¦cfile::typebinary);
globalunlock(hmembmp);
//mfile.write(pbybmp,globalsize(hmembmp));
//mfile.close();
int   msize=globalsize(hmembmp);
int   seek=0;
int   sndcount=0;
m_gpackage.ncount=msize;
while   (1)
{
memcpy(m_gpackage.m_buf,pbybmp+seek,3072);
sndcount=m_clientsock.send(&m_gpackage,sizeof(package));
seek+=3072;
//trace( "%d,seek:%d,size:%d\n ",sndcount,seek,msize);
if(msize-seek <=3072)
{
memcpy(m_gpackage.m_buf,pbybmp+seek,msize-seek);
sndcount=m_clientsock.send(&m_gpackage,sizeof(package));
break;
}

}

pstmimage-> release();
globalfree(hmembmp);
if(m_deskimage)
{
m_deskimage.detach();
::deleteobject(hbitmapc);
m_deskimage.destroy();

}
::deleteobject(hbitmap);

//::releasedc(hdeskwnd,memdc)
::deleteobject(memdc);
::deletedc(memdc);


::releasedc(hdeskwnd,hscreendc);
::deletedc(hscreendc);
发表于:2007-04-23 15:13:452楼 得分:0
这……用的什么库?
发表于:2007-04-23 15:20:193楼 得分:0
m_deskimage是什么类型的东西啊????
发表于:2007-04-23 15:21:344楼 得分:0
有哪位强人解释下?或者说有别的方法????


快速检索

最新资讯
热门点击