根据QR码API下载图片

来源:互联网 发布:mac电脑照片导入iphone 编辑:程序博客网 时间:2024/06/05 18:31

前言(废话,可略过):网上有很多在线QR码的API,可以直接设置二维码的几个参数,点击链接即可在网页上看到一张二维码的图片。现在我想把它下载到本地。废话到此,上代码。。

平台:win10、vs2008

/****************************************************代码区*****************************************************/
#include <tchar.h>
#include <iostream>
#include <urlmon.h>
#pragma comment(lib,"urlmon.lib")
/*
 #pragma comment(lib,"urlmon.lib")作用:
 连接静态库到项目中,效果等同于:
 项目属性——链接器——输入——附加依赖项中加入这个lib
 (头文件<urlmon.h>中只是包含了数据结构和函数声明,是编译阶段;
 链接阶段将从静态库中恢复这些函数和数据并把他们和应用程序中的其它模块组合在一起生成可执行文件,该过程称为“静态链接”)
*/
using namespace std;
int main(int argc, char* argv[])
{
//QR码参数说明:
//bg 背景颜色bg=颜色代码
//fg 前景颜色fg=颜色代码
//gc 渐变颜色gc=颜色代码
//el 纠错等级el可用值:h\q\m\l
//w 尺寸大小w=数值(像素)
//m 静区(外边距)m=数值(像素)
//pt 定位点颜色(外框)pt=颜色代码
//inpt 定位点颜色(内点)inpt=颜色代码
//logo logo图片logo=图片地址
//text 二维码内容text=文本内容,%0A可用于文本换行
string url = "http://qr.liantu.com/api.php?&bg=ffffff&fg=cc0000&gc=cc00000&el=h&w=300&m=30&pt=00ff00&inpt=000000&logo=http://www.liantu.com/images/2013/sample.jpg&text=深圳华云数码.";
size_t len = url.length();//获取字符串长度
int nmlen = MultiByteToWideChar(CP_ACP, 0, url.c_str(), len + 1, NULL, 0);//如果函数运行成功,并且cchWideChar为零,
//返回值是接收到待转换字符串的缓冲区所需求的宽字符数大小。
wchar_t* buffer = new wchar_t[nmlen];
MultiByteToWideChar(CP_ACP, 0, url.c_str(), len + 1, buffer, nmlen);
HRESULT hr = URLDownloadToFile(NULL, buffer,_T(".//QR_Pictures//huayun.png"), 0, NULL);
delete buffer;
return 0;
}
/****************************************************代码区*****************************************************/

利用QR码API生成二维码需要联网,如果是批量生成还需要保证网络状态良好。使用libqr库可以离线生成。下面是另一个离线生成二维码的工程文件链接,vs2008可直接打开运行。http://www.okbase.net/file/item/22937

开源资源很多,人生苦短,所以为了杜绝进一步的苦,进步吧烧面!

/***************************************************补充代码***************************************************/

#include <iostream>
#include <WINDOWS.H>
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
#pragma comment(lib, "urlmon.lib")
void main()
{
if(URLDownloadToFile(NULL,"http://qr.liantu.com/api.php?&bg=ffffff&text=华云%0A数码.","./Download Pictures/二维码.jpg",0,NULL)==S_OK)
MessageBox(NULL,"图片已经成功下载!","提示:",MB_OK);
else
MessageBox(NULL,"很遗憾图片下载失败!","提示:",MB_OK);
}

原创粉丝点击