批量生成二维码打包成exe文件

需求:  根据url 和 文件名称 生成二维码   将二维码放到背景图上合成一张二维码

思路: 使用qrcode库 获取二维码 保存本地  全部完成后 与本地背景图合成   最后使用pyinstaller将python打包成exe文件

# -*- coding: utf-8 -*-
import urllib;
import os
import time
import threadpool
from PIL import Image
import qrcode  

path = os.getcwd() + os.path.sep + ‘finally‘
if not os.path.exists(path):
    os.makedirs(path)
    print ‘create folder ‘ + path

path = os.getcwd() + os.path.sep + ‘download‘
if not os.path.exists(path):
    os.makedirs(path)
    print ‘create folder ‘ + path

def downloadImg(line):
    url = ‘http://qr.liantu.com/api.php?text=‘ + line.split()[0]
    name = line.split()[1]
    print ‘\n downloading ‘ + path + os.path.sep+  ‘%s.jpg‘ % name
    urllib.urlretrieve(url, path + os.path.sep+  ‘%s.jpg‘ % name)

def generateQRcodeLocal(line):
    qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=15,border=1,)
    qr.add_data(line.split()[0].strip())
    qr.make(fit=True)
    name = line.split()[1].strip()
    img = qr.make_image()
    imagename = path + os.path.sep+  ‘%s.jpg‘ % name
    print ‘\n name:‘ + name +  ‘\t imagename:‘ + imagename
    img.save(imagename)
    cropImg(name)

def cbk(a,b):
    print ‘‘ % a
    print ‘‘ % b

def cropImg(imgname):
    #imgname=line.split()[1]
    #加载底图
    base_img = Image.open(ur‘bg.jpg‘)
    # 可以查看图片的size和mode,常见mode有RGB和RGBA,RGBA比RGB多了Alpha透明度
    # print base_img.size, base_img.mode
    box = (349,403,1141,1195)  # 底图上需要P掉的区域
    try:
        #加载需要P上去的图片
        tmp_img = Image.open(ur‘download\%s.jpg‘ % imgname)
        #这里可以选择一块区域或者整张图片
        #region = tmp_img.crop((0,0,304,546)) #选择一块区域
        #或者使用整张图片
        region = tmp_img

        #使用 paste(region, box) 方法将图片粘贴到另一种图片上去.
        # 注意,region的大小必须和box的大小完全匹配。但是两张图片的mode可以不同,合并的时候回自动转化。如果需要保留透明度,则使用RGMA mode
        #提前将图片进行缩放,以适应box区域大小
        # region = region.rotate(180) #对图片进行旋转

        region = region.resize((box[2] - box[0], box[3] - box[1]))
        base_img.paste(region, box)
        #base_img.show() # 查看合成的图片

        base_img.save(ur‘finally\%s.jpg‘ % imgname) #保存图片
    except IOError,e:
        print ‘fail to crop image:‘ + imgname + ‘.jpg‘

name_list =[]
for line in open(‘list.txt‘,‘r‘):
    if line.strip():
        name_list.append(line)
       # print line.split()[0]

print ‘total size:‘ + str(len(name_list))
start_time = time.time()
totalThread = 50
if len(name_list) >= 5000:
    totalThread = 80
if len(name_list) >= 10000:
    totalThread = 100
print ‘total thead size:‘ + str(totalThread)
pool = threadpool.ThreadPool(totalThread)
requests = threadpool.makeRequests(generateQRcodeLocal, name_list)
map(pool.putRequest, requests)
#[pool.putRequest(req) for req in requests]
pool.wait()    # 阻塞线程
#pool.poll()   # 不阻塞线程

#print ‘start crop img now..... total size:‘ + str(len(name_list))
#for line in name_list:
    #cropImg(line.split()[1])

print ‘fail to generate image file size:‘ + str(error_size)
result = input( ‘total cost: ‘ + ‘%d second‘% (time.time()-start_time) + ‘ press any key to exit...‘)
os._exit()
"""
这个程序主要是任务是获取url从网上生成二维码下载到本地 再放到背景图上
背景图的区域是该区域使用四元组来指定。四元组的坐标依次是(左,上,右,下)。PIL 中指定坐标系的左上角坐标为(0,0)
很多东西是写死的  比如下载文件的路径 生成图片的路径  以及背景图名称
"""

原文地址:https://www.cnblogs.com/zeroones/p/8329511.html

时间: 2024-12-20 14:54:02

批量生成二维码打包成exe文件的相关文章

使用zxing批量生成二维码立牌

使用zxing批量在做好的立牌背景图的指定位置上,把指定的文本内容(链接地址.文本等)生成二维码并放在该位置, 最后加上立牌编号. 步骤: 1).做好背景图,如下图: 2).生成二维码BufferedImage对象.代码如下: /** * * @Title: toBufferedImage * @Description: 把文本转化成二维码图片对象 * @param text * 二维码内容 * @param width * 二维码高度 * @param height * 二位宽度 * @par

批量生成二维码

一个简单的批量二维码生成器 最近需要将大量的字符串生成二维码, 网上找了很多网站和应用都不是很理想,干脆自己做了吧! github 上找了下找到QrCode 开源项目 QrCode 开源类库 安装qrcode非常简单,参考这里 引用 dll using QrCode 核心逻辑 /// <summary> /// /// </summary> /// <param name="filename"></param> /// <param

C# 利用QRCode生成二维码图片

引用LYBwwp的博文http://blog.csdn.net/lybwwp/article/details/18444369 网上生成二维码的组件是真多,可是真正好用的,并且生成速度很快的没几个,QRCode就是我在众多中找到的,它的生成速度快.但是网上关于它的使用说明,真的太少了,大都是千篇一律的复制粘贴.这是本要用它做了一个项目后,简单的整理了一下. 组件下载地址:http://download.csdn.net/detail/lybwwp/6861821 下载文件包包含ThoughtWo

在Excel中,不利用任何第三方工具,生成二维码

有同事提需求,要批量生成二维码.谈了之后,我觉得可以做个excel文件,把要打印的内容放进去,然后给每行数据生成一个二维码.下一步就要在Excel里面生成二维码.问了一下度娘,貌似都得利用一些第三方工具,但是公司的政策比较严,任何软件都必须是正版(这种需求,短时间内估计不会批准预算买软件).因此想不靠第三方的东西,就用纯粹的vba,去生成二维码.这个时候就要感谢一下谷歌,很快在StackOverflow上找到了我想要的源码. 这是StackOverflow的原帖 原帖的最受欢迎答案是由Jonas

C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(一)

一.ZXing.Net 源代码地址:http://zxingnet.codeplex.com/ 也可以使用Nuget包管理,添加如图: 说明:ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME.J2SE和Android.现在也有了对应的.Net版本 二.生成二维码 将字符编码时可以指定字符格式:默认为ISO-8859-1英文字符集,但一般移动设备常用UTF-8字符

Java通过Zxing生成二维码

今天,要完成一个批量生成二维码的工作,并将生成好的二维码与另外一张底图拼接,生成一张新图. Java生成二维码主要的sdk为,qrcode和zxing,二者差别不大,这里采用了zxing. 首先,直接使用其core.jar,然后实现MatrixToImageWriter类. 在使用zxing时,我们发现默认生成的白边太大,想进行修改,通过updateBit方法进行指定白边的宽度.在修改完其白边后,会影响默认设置的二维码大小,通过zoomInImage方法进行修复. 在合成两张图片时,通过Smal

Asp.Net Core在线生成二维码

前言: 原先用zxing Code写过基于Winfrom的批量生成二维码工具,以及单个生成二维码工具:批量生成二维码Gihub源代码 今天尝试用QRCoder 加 Asp.Net Core 写了一个在线生成二维码的例子,并且保存图片到Ubuntu系统: 代码: 生成二维码所需要用到的包:QRCoder 根据Github上的源代码,引用NuGet包 PM> Install-Package QRCoder 根据传入的参数,生成二维码,并且保存图片 public static void QRCode(

批量动态生成二维码

<script type="text/javascript" src="/site_media/js/qrcode.js"></script> // 生成二维码 $(".qrcode").each(function(){ var timestamp = new Date().getTime() + Math.random().toString().split(".")[1]; // 时间戳 + 随机数

通过jquery-qrcode在线生成二维码

随着移动互联网的发展,二维码现在应用得越来越广泛了,随手扫扫就可以浏览网站.加个好友什么的,比起手工输入真的是方便太多了. 前期做了一个综合测评系统,考虑逐步实现移动化,一长串的IP地址用户输入也不方便,借助二维码的话,用户拿起手机扫扫就可以直接进入系统. 基于这个应用场景,就上网研究下了网站二维码的实现方式,归纳起来有以下两种: 1.借助一些二维码生成网站或者二维码生成器生成二维码图片,然后挂在网站上,如码云 QR-Code (二维码) 在线生成器 优点:开发成本为零,能够快速实现多样化的二维