当前位置: 首页 > 后端技术 > PHP

java、python、golang等开发语言如何快速生成二维码?

时间:2023-03-29 20:03:22 PHP

有很多方法可以生成免费二维码!比如大家熟知的草料二维码,如果只是简单使用,用它就够了。但是如果要大规模生成,就不适合了。此外,许多工具无法为二维码(如微信二维码)添加徽标。下面我就来说说如何快速高质量的生成一个高度可定制的二维码。二维码的编码算法是公开的,这意味着大多数开发语言都可以生成动画。但是在二维码应用如此广泛的今天,如果你不傻,你还自己造轮子,那你就是真正的技术极客了。Java有一个开源的二维码生成库:com.google.zxing,是谷歌大佬为Android开源的。这个库功能不强,不过是一招,谁用谁知道呢?Python出名第三方库多,二维码生成怎么能少了呢。比如:myqr、qrcode等语言不熟悉,就不展开讨论了。。。既然说了任何开发语言都可以生成二维码,只是每种语言都是独立实现的。还有一种方案,就是调用现成的API生成二维码。对于想简单使用,想控制开发成本,或者使用一些小众语言的场合,使用API??是一个很好的策略。下面推荐一个免费生成二维码的API,来自《葱算》的详细文档:https://www.xiaocongjisuan.com/show/api/14API参数传递注意事项:appKey:接口唯一标识,在用户后台->应用中心->我的界面查看openId:平台id,注册后系统自动生成,在用户后台->用户中心->账户信息查看为什么推荐这个界面?因为只有它生成的二维码才可以高度自定义,比如:logo,二维码颜色,二维码背景色,二维码大小,边距等。详细设置如下图:有一些返回值说明,详见上述api文档!接下来贴出一些常用开发语言的demo。java版:packagecom.xiaocongjisuan.module.example;importjava.io.BufferedReader;importjava.io.DataOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.UnsupportedEncodingException;导入java.net.HttpURLConnection;导入java.net.URL;导入java.net.URLEncoder;导入java.util.HashMap;导入java.util.Map;公共类应用程序{publicstaticfinalStringDEF_CHATSET="UTF-8";publicstaticfinalintDEF_CONN_TIMEOUT=30000;publicstaticfinalintDEF_READ_TIMEOUT=30000;publicstaticStringuserAgent="Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,likeGecko)Chrome/29.0.1547.66Safari/537.36";//配置您申请的appKey和openIdpublicstaticfinalStringAPP_KEY="yours";publicstaticfinalStringOPEN_ID="你的";//将地图类型转换为请求参数类型publicstaticStringurlEncode(Mapparams){if(params==null){返回””;};StringBuildersb=newStringBuilder();for(Map.Entryi:params.entrySet()){尝试{sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).追加("&");}catch(UnsupportedEncodingExceptione){e.printStackTrace();}}字符串r=sb.toString();如果(r.endsWith("&")){r=r.substring(0,r.length()-1);}返回r;}/****@paramrequestUrl请求地址*@paramparams请求参数*@param方法请求方法*@return请求结果*@throwsException*/publicstaticStringrequestContent(StringrequestUrl,Mapparams,字符串方法)抛出异常{HttpURLConnectionconn=null;BufferedReader阅读器=null;字符串rs=空;try{//组安装请求链接StringBuffersb=新的StringBuffer();if(method!=null&&method.equalsIgnoreCase("get")){requestUrl=requestUrl+"?"+urlEncode(params);}//默认获取URLurl=newURL(requestUrl);conn=(HttpURLConnection)url.openConnection();conn.setRequestMethod("GET");if(method!=null&&method.equalsIgnoreCase("post")){conn.setRequestMethod("POST");conn.setDoOutput(true);conn.setDoInput(true);}//参数配置conn.setRequestProperty("User-agent",userAgent);conn.setUseCaches(false);conn.setConnectTimeout(DEF_CONN_TIMEOUT);conn.setReadTimeout(DEF_READ_TIMEOUT);conn.setInstanceFollowRedirects(false);conn.connect();if(params!=null&&method.equalsIgnoreCase("post")){尝试{DataOutputStreamout=newDataOutputStream(conn.getOutputStream());out.writeBytes(urlEncode(参数));}catch(Exceptione){e.printStackTrace();}}//读取数据InputStreamis=conn.getInputStream();reader=newBufferedReader(newInputStreamReader(is,DEF_CHATSET));字符串strRead=null;while((strRead=reader.readLine())!=null){sb.append(strRead);}rs=sb.toString();}catch(IOExceptione){e.printStackTrace();}finally{if(reader!=null){reader.close();}if(conn!=null){conn.disconnect();}}返回rs;}publicstaticvoidmain(String[]args)throwsException{Stringdomain="http://api.xiaocongjisuan.com/";Stringservlet="开发/二维码/创建";字符串方法=“获取”;StringrequestUrl=域+servlet;Mapparams=newHashMap();params.put("appKey",APP_KEY);params.put("openId",OPEN_ID);//更改部分params.put("text","我是最可爱的男孩");params.put("w",400);params.put("m",1);params.put("颜色","000000");params.put("bgColor","ffffff");Stringresult=requestContent(requestUrl,params,method);System.out.println(结果);}}python版本#-*-coding:utf-8-*-#flake8:noqa__author__='wukong'importurllibfromurllibimporturlencode#配置你应用的appKey和openIdapp_key="***"open_id="***""""request_url请求地址params请求参数方法请求方法"""defrequest_content(request_url,params,method):params=urlencode(params)ifmethodandmethod.lower()=="get":f=urllib.urlopen("%s?%s"%(request_url,params))else:f=urllib.urlopen(request_url,params)content=f.read()打印内容defmain():domain="http://api.xiaocongjisuan.com/";servlet="develop/qrcode/create"method="get"request_url=domain+servlet#dictionaryparams={}params["appKey"]=app_keyparams["openId"]=open_id#changepartparams["text"]="我是最可爱的男孩"params["w"]=400params["m"]=1params["color"]="000000"params["bgColor"]="ffffff"request_content(request_url,params,方法)如果__name__=='__main__':main()phpversion:$value){$params[$key]=mb_convert_encoding($value,"UTF-8","GBK");}$paramstring=http_build_query($params);$content=http_curl($url,$paramstring,true);return$content;}echomain();?>其他语言可以查看文档了解详情。其实只要能发POST请求,就可以用上面的方法生成二维码。上面方法生成的最后一个二维码图例