生成二维码
来源:互联网 发布:php图片上传 编辑:程序博客网 时间:2024/06/05 02:20
用libqrencode库,可以到https://github.com/fukuchi/libqrencode下载自己编译。
使用时参考下面
#include <stdio.h> #include <Windows.h> #include <qrencode.h> //#pragma comment(lib,"libqrencode.lib") #define BMP_SCALE 8int main(){const char * QRTEXT = "6546546546546515615231548468465351321654564654654564564156456456564654184564654";QRcode * qrCode;int version = 1;//设置版本号,这里设为5,对应尺寸:37 * 37 QRecLevel level = QR_ECLEVEL_L;QRencodeMode hint = QR_MODE_8;int casesensitive = 1;qrCode = QRcode_encodeString(QRTEXT, version, level, hint, casesensitive);if (NULL == qrCode){printf("QRcode create fail\n");return -1;}//将要生成的二维码保存为BMP真彩色图片文件 FILE * pf = fopen("qrcode.bmp", "wb");if (NULL == pf){printf("file open fail.\n");fclose(pf);return -1;}int width = qrCode->width * BMP_SCALE;int height = qrCode->width * BMP_SCALE;int biCount = 24;//真彩色 int lineByte = (width * biCount / 8 + 3) / 4 * 4; //每line字节数必须为4的倍数 //位图文件头 BITMAPFILEHEADER bitMapFileHeader;bitMapFileHeader.bfType = 0x4D42;bitMapFileHeader.bfSize = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+lineByte * height;bitMapFileHeader.bfReserved1 = 0;bitMapFileHeader.bfReserved2 = 0;bitMapFileHeader.bfOffBits = sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);//位图信息头 BITMAPINFOHEADER bitMapInfoHeader;bitMapInfoHeader.biBitCount = biCount;bitMapInfoHeader.biClrImportant = 0;bitMapInfoHeader.biClrUsed = 0;bitMapInfoHeader.biCompression = 0;bitMapInfoHeader.biHeight = height;bitMapInfoHeader.biPlanes = 1;bitMapInfoHeader.biSize = 40;bitMapInfoHeader.biSizeImage = lineByte * height;bitMapInfoHeader.biWidth = width;bitMapInfoHeader.biXPelsPerMeter = 0;bitMapInfoHeader.biYPelsPerMeter = 0;//写文件头进文件 fwrite(&bitMapFileHeader, sizeof(BITMAPFILEHEADER), 1, pf);//写位图信息头进文件 fwrite(&bitMapInfoHeader, sizeof(BITMAPINFOHEADER), 1, pf);unsigned char * pBMPData = new unsigned char[lineByte * height];memset(pBMPData, 255, lineByte * height);unsigned char * qrData = qrCode->data;for (int i = height; i > 0 ; i--){for (int j = 0; j < lineByte / 3; j++){if (*(qrData + (i / BMP_SCALE * qrCode->width + j / BMP_SCALE)) & 1){//设置rgb颜色,可自定义设置,这里设为黑色。 *(pBMPData + lineByte * (i * 1) + 3 * (j * 1)) = 0;*(pBMPData + lineByte * (i * 1) + 3 * (j * 1) + 1) = 0;*(pBMPData + lineByte * (i * 1) + 3 * (j * 1) + 2) = 0;}//qrData++;}}//写数据进文件 fwrite(pBMPData, sizeof(unsigned char), lineByte * height, pf);fclose(pf);delete[] pBMPData;pBMPData = NULL;QRcode_free(qrCode);return 0;}
阅读全文
0 0
- java二维码 生成二维码
- 生成二维码、识别二维码
- 扫描二维码+生成二维码
- 生成二维码、自定义二维码
- 生成二维码
- 二维码生成
- 二维码生成
- 生成二维码
- 二维码生成
- 二维码生成
- 生成二维码
- 二维码生成
- 生成二维码
- 二维码--生成
- 生成二维码
- 生成二维码
- 二维码生成
- 生成二维码
- Proxy 代理模式 对象结构型模式
- ES6 学习之promise 基本用法
- 常见的一些页面布局
- 冒泡排序
- 【Kylin】Kylin中的cube构建
- 生成二维码
- 使用Jsoup获取天气
- Redis几个认识误区
- 非正常关机时,innodb故障导致mysql无法启动的解决方法
- Markdown 基本用法说明
- PCI总线地址空间与系统地址空间的关系
- mybatis学习笔记二 学前准备
- PCA主成分分析
- windows 64bits+VS2015+FFmpeg实践