【原】VC实现二维码解析之zbar篇
来源:互联网 发布:波士顿矩阵分析京东 编辑:程序博客网 时间:2024/05/21 09:58
一直在加班搞这个该死的东东,头晕脑胀。把网上所有的方法都尝试了一遍之后还是不行,于是只能“致富靠双手,要爽由自己”了
言归正传
步骤1 下载zbar for windows
地址
http://sourceforge.jp/projects/sfnet_zbarw/
步骤2 安装zbar
选定一个指定路径进行安装,最好是纯英文的路径,中文的也能实现,但不知道会遇到什么未知的问题
安装好后在指定的路径应该能找到这样一个文件夹ZBAR,里面的内容如下:
步骤 3
在程序中通过system函数调用bin文件中的zbarimg.EXE,实现二维码解析功能
程序如下:
system("D:\\ZBar\\bin\\zbarimg.exe D:\\qrcodeimg\\GH1.bmp>C:\\2.txt");
注2 "D:\\ZBar\\bin\\zbarimg.exe为zbarimg.EXE的绝对路径
注3 D:\\qrcodeimg\\GH1.bmp为需要解析的二维码图片
注4 >C:\\2.txt 是将二维码解析结果写入一个txt文档中,后续使用
步骤4: 解析txt文档
将txt文档中的内容根据分隔符进行解析,返回CStringArray类型的对象
//////根据指定字符分割字符串函数
CStringArray* QRDecode::DivString(CString test)
{
CStringArray* m_result = new CStringArray;
while(TRUE)
{
int index = test.Find(_T("|"));
if(index == -1)
{
m_result->Add(test);
return m_result;
}
CString test1 = test.Left(index);
m_result->Add(test1);
test = test.Right(test.GetLength()-index-1);
}
}
/////////////////////////////////根据文件路径获取字符串功能函数
CStringArray* QRDecode::GetQRData()
{
CFile file;
file.Open("C:\\2.txt",CFile::modeRead); //打开文件,具体路径你自己的
char szBuff[1000] = "";
file.Read(szBuff,500); //从文件中读500个字节的东西,读多少自己来
CString str = szBuff; //这个就是你要的东西了.
CStringArray *arr;
arr = DivString(str);
file.Close(); //用完记得关闭文件.
return arr;
}
步骤5 显示到界面上
CStringArray *arr;
arr = m_qrdecode->GetQRData();
m_qrcode.SetWindowText(arr->GetAt(0));
m_qrcode2.SetWindowText(arr->GetAt(1));
m_qrcode3.SetWindowText(arr->GetAt(2));
m_qrcode4.SetWindowText(arr->GetAt(3));
m_qrcode5.SetWindowText(arr->GetAt(4));
m_qrcode6.SetWindowText(arr->GetAt(5));
m_qrcode7.SetWindowText(arr->GetAt(6));
注,这里调用dos命令窗口会显示一个黑框,去掉黑框的方法就是创建一个函数,使用creatProcess方法替代system方法
/////////////////////////替代函数如下
BOOL QRDecode::system_hide(char *CommandLine)
{
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead,&hWrite,&sa,0))
{
return FALSE;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
//关键步骤,CreateProcess函数参数意义请查阅MSDN
if (!CreateProcess(NULL, CommandLine, NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi))
{
return FALSE;
}
CloseHandle(hWrite);
char buffer[4096] = {0};
DWORD bytesRead;
while(true)
{
memset(buffer,0,strlen(buffer));
if(ReadFile(hRead,buffer,4095,&bytesRead,NULL)==NULL)
break;
//buffer中就是执行的结果,可以保存到文本,也可以直接输出
//printf(buffer);//这行注释掉就可以了
Sleep(100);
}
return TRUE;
}
///////////////////////////调用如下
system_hide("D:\\ZBar\\bin\\zbarimg.exe D:\\qrcodeimg\\GH1.bmp>C:\\2.txt");
工程文件可以在csdn下载,具体链接如下:
http://download.csdn.net/detail/u011671760/6297229
就要了一分,请兄弟们支持一下。我也是下载了很多工程才搞定的。
0 0
- 【原】VC实现二维码解析之zbar篇
- Zbar二维码解析库编译
- Zbar二维码解析库编译
- Android开源库之使用ZBar开源库实现二维码功能
- Android开发之Zbar实现二维码扫描功能
- ZBar 实现扫描长方形二维码
- 二维码zBar之乱码解决
- Ubuntu下安装二维码解析zbar
- zBar二维码
- ipad zbar 实现 条码 二维码 读取
- Android开发之二维码ZXing vs ZBar
- 二维码识别之Android完整编译Zbar
- 二维码识别之Android完整编译Zbar
- 二维码识别之Android完整编译Zbar
- 二维码解析库zbar+openCV的移植和使用
- 使用zbar+opencv+cpp 进行二维码解析以及提高识别率
- 利用Zbar来实现iOS中扫描二维码
- 用ZBar实现IOS上二维码扫描功能
- MFC 中设置背景音乐
- MFC实现多个界面跳转
- MFC实现透明button
- CString 按指定字符分割为若干个CString
- MFC picture控件显示动态/静态BMP图片
- 【原】VC实现二维码解析之zbar篇
- 使用modi方案实现中文ocr识别
- 使用cstring实现中文字符串模糊匹配
- BOOL转换成CString,显示在messagebox
- vc调用cmd隐藏窗体代码
- VC++下处理UTF8编码的字符串
- 辞职信
- 安装ionic全流程
- Android学习路线总结,绝对干货