怎么让c++输出图片啊?

就是利用容易懂的语句来描述,而且可以实现图片的输出!

这是一段我的从数据库读取图片并保存到本地的代码,给你参考下
void CTalkDlg::OnButtonTalkSm1(UINT nFlags, CPoint point) //从数据库读取图片数据
{

//-------------------ado-------------------//
extern _ConnectionPtr pConnection;//ADO连接数据库
extern void Connect_DB(int i);
//
if(pConnection->State==0)//连接是关闭的
{
//MessageBox(_T("0"));
Connect_DB(2);
}
else if(pConnection->State != 1)//连接正在被使用
{
while(pConnection->State != 1)
{
Sleep(500);
}
}

//-----------------------------------------//

//从数据库里取图像文件
try
{
_variant_t vUsername,vID,vname; //变量声明

_RecordsetPtr pRecordset;//记录集
pRecordset.CreateInstance(__uuidof(Recordset));//创建实例
char sSQL[129];
sprintf(sSQL,"SELECT *FROM lt WHERE ltfu=0");

pRecordset->Open(sSQL,_variant_t((IDispatch*)pConnection),adOpenStatic,adLockOptimistic,adCmdText);

CString stryh,strhy;
while (!pRecordset->adoEOF)
{
vUsername = pRecordset->GetCollect(_T("lthy"));//获得好友id
strhy=vUsername.bstrVal;
vUsername = pRecordset->GetCollect(_T("ltyh"));//获得用户id
stryh=vUsername.bstrVal;
if(strhy==m_grxx_zhanghao && stryh==ltname)//////////////////判断是否是发给自己的
{
_variant_t pvList ;
long lDataSize = pRecordset->GetFields()->GetItem("lttp")->ActualSize;
m_nFileLen = (DWORD)lDataSize;
if(lDataSize > 0)
{
_variant_t varBLOB;
varBLOB = pRecordset->GetFields()->GetItem("lttp")->GetChunk(lDataSize);
//把二进制格式的图片转为图片格式
char * m_pJPGBuffer;
IStream * pStream;
IPicture * pPicture;
try
{
if(varBLOB.vt == (VT_ARRAY | VT_UI1))
{
if(m_pJPGBuffer = new char[lDataSize+1])
{
char *pBuf = NULL;
SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
memcpy(m_pJPGBuffer,pBuf,lDataSize);
SafeArrayUnaccessData (varBLOB.parray);
m_nFileLen = lDataSize;
//m_pJPGBuffer -> pPicture
HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, m_nFileLen );
LPVOID lpBuf = ::GlobalLock( hMem );
memcpy(lpBuf,m_pJPGBuffer,m_nFileLen);
::GlobalUnlock( hMem );
CreateStreamOnHGlobal( hMem, TRUE, &pStream );
OleLoadPicture( pStream, m_nFileLen, TRUE, IID_IPicture, ( LPVOID * )&pPicture );
////////////////////////图片另存为//////////////////////////////////
CString ljname;//路径名
//提取文件名
CFileDialog opendlg (FALSE,_T("*"),jsnr.Right(jsnr.GetLength()-jsnr.ReverseFind(':')-1),OFN_OVERWRITEPROMPT, _T("所有文件(*.*;)|*.*||"),this);
if (opendlg.DoModal()==IDOK)
{
ljname=opendlg.GetPathName();
CFile destFile(ljname, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary);
//写文件
destFile.Write(pBuf, m_nFileLen); //Write it
destFile.Close();
//MessageBox(_T("图片已保存!"));
/////////////////////
}
catch(...)
{
AfxMessageBox(_T("从数据库中读取jpg图像出错!"));

return;
}

}
/////////////////////////////////
}
pRecordset->MoveNext();///移到下一条记录
}
}
catch(...)
{
AfxMessageBox(_T("数据库读取失败"));

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-27
C++本身有文件读取和输出的功能,你可以自己设定后缀名
至于如何读取和输出就涉及到图片的解析问题了本回答被提问者采纳

怎么让c++输出图片啊?
void CTalkDlg::OnButtonTalkSm1(UINT nFlags, CPoint point) \/\/从数据库读取图片数据 { \/\/---ado---\/\/ extern _ConnectionPtr pConnection;\/\/ADO连接数据库 extern void Connect_DB(int i);\/\/ if(pConnection->State==0)\/\/连接是关闭的 { \/\/MessageBox(_T("0"));Connect_DB(2);} els...

用c++怎么输出一张图片?
你可以通过用户自定义控件来显示图片,当然也可以建立内存描述表,然后导入图片,然后将内存描述表中的图片传到对话框窗口上,但是要麻烦的很多,建议使用第一种,但是找不到ActiveX控件的话也只有用第二种方法了。第2种的具体方法:CPaintDC dc(this);\/\/建立设备描述表 HBITMAP hbitmap= ::LoadBitmap(...

求助:如何用C++输出一张图片
C++是在C语言的基础上开发的一种通用编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。 办法:CPaintDC dc(this);\/\/建立设备描述表 HBITMAP hbitmap= ::LoadBitmap(::AfxGetInstanceHandle(); MAKEINTRESOURCE ...

怎么C或C++输出一张图片?
imread();imshow();

c++中输出字符图片
保存为文件,然后文件输入、标准输出

c\/c++ cgi程序如何输出图片和其它二进制文件?
cgi输出图片和其他二进制文件是需要区别对待的。主要差别在于设置好返回的response-head部分的mime-type。图片应该是image\/jpeg,而二进制文件下载应该是application\/octet-stream,当然还需要处理一下content-length这个头部。至于说内容,不论用read还是fread源文件数据后,通过write或者fwrite到stdout(write用句柄...

我想问一下,在C++中怎么调用图片
我想问一下,在C++中怎么调用图片.最好能把实现的程序部分写出来,在注释一下,这样我会20加分我想编一个小游戏主要用在界面的显示... 我想问一下,在C++中怎么调用图片.最好能把实现的程序部分写出来,在注释一下,这样我会20加分我想编一个小游戏主要用在界面的显示 展开 ...

c++打印数字图案?
using namespace std;int main(){ int n;\/\/x,y表示当前数组要赋值的位置 int x = 0,y = -1;\/\/每次赋值时,x和y的增量 int x_add = 0, y_add = 1;\/\/num:移动方向发生变化的转变点,num_add:每次转变时num的增量 cin>>n;int a[n][n];int num = n,num_add = n;for(int i...

求一个c++实现读取文件夹内图片名字并输出所有图片名字的程序_百度知 ...
读取图片地址时先获取上一级地址以及图片后缀,比如D:\\mypic\\wutong\\shu和jpg,然后遍历该地址下的所有该格式的图片,也可以查找与原图相似的图片,具体得看你设定的规则,比如数字递增要考虑进位的字符串处理。

怎样用c++MFC实现点击按钮显示图片
1. 添加picture control的变量m_st,添加picture control的BN_CLICKED消息响应在按钮里加 if(flag == 0) { CWnd * pWnd = GetDlgItem(IDC_STATIC);

相似回答