文字转化成位图 大家好,我一个菜鸟,这几天我在做一个项目,用VC+编写,遇到一个好多天都没有解决的难题,就是怎样将文字转化成位图,不知道怎样解决,十万火急呀,希望高手们给出出注意。谢谢啦 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个简单的方法,现在DC上输出你的文字,然后将DC保存成位图 对,可以先得到文字的区域,然后截部分内存图片就行了,然后保存,这个过程中应该使用OpenCv比较容易一点;直接写BMP位图也行。 http://topic.csdn.net/u/20081111/11/587ca90d-8b6b-4f08-be56-bace7d33764a.html 如果你使用VC2005,直接使用这个类CImage void CPdf417View::OnFileSave() { // TODO: Add your command handler code here TCHAR szFilters[]=_T("位图文件(*.bmp)|*.bmp||"); CFileDialog dlg(FALSE,_T("bmp"),_T("*.bmp"),OFN_HIDEREADONLY,szFilters); if(dlg.DoModal()==IDOK) { CFile file(_T(dlg.GetFileName()),CFile::modeWrite|CFile::modeCreate); if(!file) AfxMessageBox("Cannot save the file!"); BITMAPINFO *m_pBMI; BYTE *m_pDIBData; BITMAPFILEHEADER bfh; BITMAPINFOHEADER bi; BITMAP BM; RGBQUAD rgb[2]= { {0,0,0,0}, {255,255,255,0} }; int x = sizeof(RGBQUAD); pBitmap->GetObject(sizeof(BM),&BM); CClientDC dc(this); bi.biSize = sizeof(BITMAPINFOHEADER); bi.biWidth = m_pic.m_ModelWidth+m_pic.m_Px+17*m_pic.m_ModelWidth*m_pic.m_LineModelNum +1 ; bi.biHeight = m_pic.m_Py+m_pic.m_LineNum*m_pic.m_ModelHight+10; bi.biPlanes = 1; bi.biBitCount = 1; bi.biCompression = 0; bi.biSizeImage = 0; bi.biXPelsPerMeter = 0; bi.biYPelsPerMeter = 0; bi.biClrUsed = 0; bi.biClrImportant = 0; bfh.bfType=0x4d42; bfh.bfOffBits=sizeof(bfh)+sizeof(BITMAPINFOHEADER)+2*sizeof(RGBQUAD); bfh.bfSize=bfh.bfOffBits+BM.bmWidth*BM.bmHeight; bfh.bfReserved1=0; bfh.bfReserved2=0; m_pBMI=(BITMAPINFO*)new char[sizeof(BITMAPINFO)]; m_pDIBData=(BYTE*)new char[bfh.bfSize-bfh.bfOffBits]; memcpy(m_pBMI,&bi,sizeof(BITMAPINFOHEADER)); GetDIBits(dc.GetSafeHdc(), (HBITMAP)pBitmap->GetSafeHandle(), 0l, (DWORD)bi.biHeight, (LPVOID)m_pDIBData,(LPBITMAPINFO)m_pBMI, (DWORD)DIB_RGB_COLORS); file.Write(&bfh,sizeof(bfh)); file.Write(m_pBMI,sizeof(BITMAPINFOHEADER)); file.Write(rgb,2*sizeof(RGBQUAD)); file.Write(m_pDIBData,BM.bmWidth*BM.bmHeight); file.Close(); } } 不会DC也可以getpixel()然后直接写成BMP文件。 用VC2005做远程调试,远程机器上需要安装什么吗? 一个TCP分包的问题 LoadIcon 和LoadImage 关于CScoket,求教 浏览器调用函数问题 请教:绘制一条表示若干离散点趋势的光滑曲线 哪个好心人有<windws网络编程技术>第一版的源代码 有关OCX控件在其他机子上不能注册的问题?? setitemstate 到底怎么用? 求助 VC编译一段程度,一直出现错误 一个平时大家都会遇到的问题!!!!!!!!!11
对,可以先得到文字的区域,然后截部分内存图片就行了,然后保存,这个过程中应该使用OpenCv比较容易一点;直接写BMP位图也行。
void CPdf417View::OnFileSave()
{
// TODO: Add your command handler code here
TCHAR szFilters[]=_T("位图文件(*.bmp)|*.bmp||");
CFileDialog dlg(FALSE,_T("bmp"),_T("*.bmp"),OFN_HIDEREADONLY,szFilters);
if(dlg.DoModal()==IDOK)
{
CFile file(_T(dlg.GetFileName()),CFile::modeWrite|CFile::modeCreate);
if(!file)
AfxMessageBox("Cannot save the file!");
BITMAPINFO *m_pBMI;
BYTE *m_pDIBData;
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bi;
BITMAP BM;
RGBQUAD rgb[2]=
{ {0,0,0,0},
{255,255,255,0}
};
int x = sizeof(RGBQUAD);
pBitmap->GetObject(sizeof(BM),&BM);
CClientDC dc(this);
bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biWidth = m_pic.m_ModelWidth+m_pic.m_Px+17*m_pic.m_ModelWidth*m_pic.m_LineModelNum +1 ;
bi.biHeight = m_pic.m_Py+m_pic.m_LineNum*m_pic.m_ModelHight+10;
bi.biPlanes = 1;
bi.biBitCount = 1;
bi.biCompression = 0;
bi.biSizeImage = 0;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0; bfh.bfType=0x4d42;
bfh.bfOffBits=sizeof(bfh)+sizeof(BITMAPINFOHEADER)+2*sizeof(RGBQUAD);
bfh.bfSize=bfh.bfOffBits+BM.bmWidth*BM.bmHeight;
bfh.bfReserved1=0;
bfh.bfReserved2=0;
m_pBMI=(BITMAPINFO*)new char[sizeof(BITMAPINFO)];
m_pDIBData=(BYTE*)new char[bfh.bfSize-bfh.bfOffBits]; memcpy(m_pBMI,&bi,sizeof(BITMAPINFOHEADER));
GetDIBits(dc.GetSafeHdc(), (HBITMAP)pBitmap->GetSafeHandle(), 0l, (DWORD)bi.biHeight,
(LPVOID)m_pDIBData,(LPBITMAPINFO)m_pBMI, (DWORD)DIB_RGB_COLORS); file.Write(&bfh,sizeof(bfh));
file.Write(m_pBMI,sizeof(BITMAPINFOHEADER));
file.Write(rgb,2*sizeof(RGBQUAD));
file.Write(m_pDIBData,BM.bmWidth*BM.bmHeight);
file.Close();
}
}