条形码(barcode)code128生成代码
条形码(barcode)code128生成代码 很简单 多些这位兄弟https://bbs.csdn.net/topics/350125614
下面是我的DEMO 直接放到VS2005下面编译即可
#include <ctime> #include <string> #include <map> #include <vector> using namespace std; #include <windows.h> #include <atlimage.h> map<int,string> g_codemap; bool FillCodeMap(void); bool GetStringCode(char *str, string &strCode); bool GetImg(string code,CImage& img); HDC Hdc=::GetWindowDC(::GetDesktopWindow()); int main(int argc, char **argv) { //"038000356216" FillCodeMap();string code;GetStringCode("038000356216",code);printf("cod:\n%s\n",code.c_str());CImage img;GetImg(code,img);img.Save(L"d:/barcode-demo.jpg");//这里基本就OK了 下面是直接显示到屏幕的代码 CImage demo;{demo.Create(img.GetWidth()+400,img.GetHeight()+400,24);HBRUSH white=(HBRUSH)GetStockObject(WHITE_BRUSH);RECT rc;rc.left=0;rc.right=demo.GetWidth();;rc.top=0;rc.bottom=demo.GetHeight();HDC hdc=demo.GetDC();::FillRect(hdc,&rc,white);img.BitBlt(hdc,200,200);demo.ReleaseDC();}while(1){demo.BitBlt(Hdc,100,100);::Sleep(50);}return 0; }bool GetImg(string code,CImage& img) {if(code.empty())return false;if(!img.IsNull())img.Destroy();int perWid=1;int externWid=0;int hei=76+externWid*2;int wid=code.length()*perWid+externWid*2;img.Create(wid,hei,24);HDC hdc=img.GetDC();HBRUSH white=(HBRUSH)GetStockObject(WHITE_BRUSH);HBRUSH black=(HBRUSH)GetStockObject(BLACK_BRUSH);RECT rc;rc.left=rc.top=0;rc.right=img.GetWidth();rc.bottom=img.GetHeight();::FillRect(hdc,&rc,white);rc.left=externWid;rc.right=rc.left+perWid;rc.top=externWid;rc.bottom=img.GetHeight()-externWid;const char* p=code.c_str();for(int i=0;i<code.length();++i){::FillRect(hdc,&rc,p[i]=='0'?white:black);rc.left+=perWid;rc.right+=perWid;}img.ReleaseDC(); } bool FillCodeMap(void)//g_codemap是个map,这我不用讲了,找个地方定义一下,在此处填充 { if(!g_codemap.empty()) return true;g_codemap[32]="11011001100"; g_codemap[33]="11001101100"; g_codemap[34]="11001100110"; g_codemap[35]="10010011000"; g_codemap[36]="10010001100"; g_codemap[37]="10001001100"; g_codemap[38]="10011001000"; g_codemap[39]="10011000100"; g_codemap[40]="10001100100"; g_codemap[41]="11001001000"; g_codemap[42]="11001000100"; g_codemap[43]="11000100100"; g_codemap[44]="10110011100"; g_codemap[45]="10011011100"; g_codemap[46]="10011001110"; g_codemap[47]="10111001100"; g_codemap[48]="10011101100"; g_codemap[49]="10011100110"; g_codemap[50]="11001110010"; g_codemap[51]="11001011100"; g_codemap[52]="11001001110"; g_codemap[53]="11011100100"; g_codemap[54]="11001110100"; g_codemap[55]="11101101110"; g_codemap[56]="11101001100"; g_codemap[57]="11100101100"; g_codemap[58]="11100100110"; g_codemap[59]="11101100100"; g_codemap[60]="11100110100"; g_codemap[61]="11100110010"; g_codemap[62]="11011011000"; g_codemap[63]="11011000110"; g_codemap[64]="11000110110"; g_codemap[65]="10100011000"; g_codemap[66]="10001011000"; g_codemap[67]="10001000110"; g_codemap[68]="10110001000"; g_codemap[69]="10001101000"; g_codemap[70]="10001100010"; g_codemap[71]="11010001000"; g_codemap[72]="11000101000"; g_codemap[73]="11000100010"; g_codemap[74]="10110111000"; g_codemap[75]="10110001110"; g_codemap[76]="10001101110"; g_codemap[77]="10111011000"; g_codemap[78]="10111000110"; g_codemap[79]="10001110110"; g_codemap[80]="11101110110"; g_codemap[81]="11010001110"; g_codemap[82]="11000101110"; g_codemap[83]="11011101000"; g_codemap[84]="11011100010"; g_codemap[85]="11011101110"; g_codemap[86]="11101011000"; g_codemap[87]="11101000110"; g_codemap[88]="11100010110"; g_codemap[89]="11101101000"; g_codemap[90]="11101100010"; g_codemap[91]="11100011010"; g_codemap[92]="11101111010"; g_codemap[93]="11001000010"; g_codemap[94]="11110001010"; g_codemap[95]="10100110000"; g_codemap[96]="10100001100"; g_codemap[97]="10010110000"; g_codemap[98]="10010000110"; g_codemap[99]="10000101100"; g_codemap[100]="10000100110"; g_codemap[101]="10110010000"; g_codemap[102]="10110000100"; g_codemap[103]="10011010000"; g_codemap[104]="10011000010"; g_codemap[105]="10000110100"; g_codemap[106]="10000110010"; g_codemap[107]="11000010010"; g_codemap[108]="11001010000"; g_codemap[109]="11110111010"; g_codemap[110]="11000010100"; g_codemap[111]="10001111010"; g_codemap[112]="10100111100"; g_codemap[113]="10010111100"; g_codemap[114]="10010011110"; g_codemap[115]="10111100100"; g_codemap[116]="10011110100"; g_codemap[117]="10011110010"; g_codemap[118]="11110100100"; g_codemap[119]="11110010100"; g_codemap[120]="11110010010"; g_codemap[121]="11011011110"; g_codemap[122]="11011110110"; g_codemap[123]="11110110110"; g_codemap[124]="10101111000"; g_codemap[125]="10100011110"; g_codemap[126]="10001011110"; g_codemap[195]="10111101000"; g_codemap[196]="10111100010"; g_codemap[197]="11110101000"; g_codemap[198]="11110100010"; g_codemap[199]="10111011110"; g_codemap[200]="10111101110"; g_codemap[201]="11101011110"; g_codemap[202]="11110101110"; g_codemap[203]="11010000100"; g_codemap[204]="11010010000"; g_codemap[205]="11010011100"; g_codemap[206]="1100011101011"; g_codemap[207]="11011001100";return true; } bool GetStringCode(char *str, string &strCode) {//传说中的code128B码就是这么造的,因为VC中的char其实就是一个int,所以对我们VC来讲更是简单无比 if(str==NULL) return false; if(int(strlen(str))==0) return false;vector <int> tV;int nTol = 104; int nsz = strlen(str);for (int i=0;i<nsz;i++) { if(str[i]>=32) nTol += (str[i] - 32) * (i+1); else nTol += (str[i] + 64) * (i+1); }int nEndCode = nTol%103; if (nEndCode>=95) { if(nEndCode<=102) nEndCode = 100 + nEndCode; } else { nEndCode += 32; }tV.push_back(204);//加头 for (int j=0;j<nsz;j++) tV.push_back(int(str[j]));//加内容 tV.push_back(nEndCode);//加校验码 tV.push_back(206);//加尾int nV = tV.size(); for (int k=0;k<nV;k++) { strCode += g_codemap[tV.at(k)]; }return true; }
转载于:https://www.cnblogs.com/yuandaozhe/p/9735824.html
条形码(barcode)code128生成代码相关推荐
- 小程序 生成条形码barcode.js
1.下载barcode.js,新建一个文件wxbarcode.js用于计算条形码的宽高,以自适应不同手机屏显示 var barcode = require('./barcode'); function ...
- wps js生成条形码,批量生成code128条形码小标签并导出为pdf文件
最近从vba转到js宏,以前写vba可以引用BarcodeX控件生成条形码,但我不知道怎么在wps js环境引用第三方控件,所以只能用Shapes.AddPicture方法插入条形码图片,这里利用bw ...
- php+条形码在线怎么生成,php实现生成code128条形码的方法详解
本文实例讲述了php实现生成code128条形码的方法.分享给大家供大家参考,具体如下: 效果图: class BarCode128 { const STARTA = 103; const START ...
- android zxing生成条形码,用zxing生成没有白边的条形码
阅读上方源码解析后得到思路: 白边的大小: int leftPadding = (outputWidth - (inputWidth * multiple)) / 2; 要让leftpadding为0 ...
- 条码生成代码(Code39码)
zryou 的 条码生成代码(Code39码) 『Code 39条形码介绍』 code39条码能表示字母.数字和其它一些符号共43个字符:A -Z, 0-9, -.$/ + %, space等,其主要 ...
- 使用Spire.Barcode程序库生成二维码
使用Spire.Barcode程序库生成二维码 某天浏览网页发现了一个二维码的程序库.它的描述说他可以扫描二维码图像.我很感兴趣,想试试他是不是会有用.所以我就用了些方法扫描二维码图像来测试一下.结果 ...
- Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码
Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码 一.关于ZXing 1.ZXing是谷歌开源的支持二维码.条形码 等图形的生成类库:支持生成.和解码功能. G ...
- 一句代码生成二维码,一句代码生成条形码,批量生成二维码和条形码,步骤教学
生产企业或者物流快递需要用到大量的二维码和条形码,但是要自行编写代码批量生成二维码或者条形码并不容易,涉及的知识面很广. Excel插件<E灵>提供了二维码接口和条形码接口,您只需要一句代 ...
- C#分析数据库结构,使用XSL模板自动生成代码
<html> <head> <TITLE>分析数据库结构,自动生成代码</TITLE> <meta http-equiv="Conten ...
最新文章
- subprocess 模块
- 数据中心制冷基本原则及节能方案
- JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据
- JS 数字左补零函数
- a programmer should know...
- Android文件Apk下载变ZIP压缩包解决方案
- AC Automaton
- linux上的那些查找的命令
- [剑指offer][JAVA]面试题第[06]题[从尾到头打印链表][栈][递归]
- “大团队”和“敏捷开发”,谁说不可兼得?
- 上位机获取单片机发来的数据并进行检验(完整版,附完整源码)
- Linux I2C核心、总线与设备驱动
- TensorFlow学习记录1-一些比较好的学习资源
- 气是能量的宏观运行的现象描述
- ldd -r xxx.so命令 undefined symbol即错误定位c++filt
- 《我的团长我的团》 - 观后感
- 校运会计算机应用口号,校运会入场霸气押韵口号(精选60句)
- 根据经纬度坐标点返回所在行政区域实现
- Linux批量追加文件名后缀
- proteus8.9仿真闪退怎么解决?如何找到ProgramData?