二维码
import qrcode from PIL import Image import os, sys def gen_qrcode(string, path, logo=""): """ 生成中间带logo的二维码 需要安装qrcode, PIL库 @参数 string: 二维码字符串 @参数 path: 生成的二维码保存路径 @参数 logo: logo文件路径 @return: None """ qr = qrcode.QRCode( version=2, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=8, border=1 ) qr.add_data(string) qr.make(fit=True) img = qr.make_image() img = img.convert("RGBA") if logo and os.path.exists(logo): try: icon = Image.open(logo) img_w, img_h = img.size except Exception as e: print(e) sys.exit(1) factor = 4 size_w = int(img_w / factor) size_h = int(img_h / factor) icon_w, icon_h = icon.size if icon_w > size_w: icon_w = size_w if icon_h > size_h: icon_h = size_h icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS) w = int((img_w - icon_w) / 2) h = int((img_h - icon_h) / 2) icon = icon.convert("RGBA") img.paste(icon, (w, h), icon) img.save(path) # 调用系统命令打开图片 # xdg - open(opens a file or URL in the user's preferred application) os.system('xdg-open %s' % path) if __name__ == "__main__": info = "http://www.fjut.edu.cn" pic_path = "qr.png" logo_path = "logo.png" gen_qrcode(info, pic_path,logo_path )
验证码
import random, string, sys, math from PIL import Image,ImageDraw, ImageFont,ImageFilter font_path='C:\\Windows\\Fonts\\arial.ttf' number=4 size=(80,90) bgcolor=(255,255,255) fontcolor=(0,0,255) linecolor=(255,0,0) draw_line=True line_number=(1,5) def gene_text(): source=list(string.ascii_letters) for index in range(0,10): source.append(str(index)) return "".join(random.sample(source,4)) def gene_line(draw,width,height): begin=(random.randint(0,width),random.randint(0,height)) end=(random.randint(0,width),random.randint(0,height)) draw.line([begin,end],fill=linecolor) def gene_code(): width,height=size image=Image.new('RGBA',(width,height),bgcolor) font=ImageFont.truetype(font_path,25) draw=ImageDraw.Draw(image) text=gene_text() font_width, font_height=font.getsize(text) draw.text(((width-font_width)/number, (height-font_height)/number),text,font=font,fill=fontcolor) if draw_line: gene_line(draw,width,height) image=image.transform((width+20,height+10), Image.AFFINE,(1,-0.3,0,-0.1,1,0),Image.BILINEAR) image=image.filter(ImageFilter.EDGE_ENHANCE_MORE) image.save('1.png') if __name__=="__main__": gene_code()
聊天
#服务器 import socket import threading import time def onLink(sock, addr, user): user = 'user' + str(user) print('来自' + str(addr) + ' as ' + user) sock.send(b'welcome') while True: data = sock.recv(1024).decode('utf-8') time.sleep(1) if not data or data == 'exit': break print(user + ' : ' + data) rtn = input('回复' + user + ' : ') sock.send(rtn.encode('utf-8')) sock.close() print('close %s:%s' % addr) print(user + ' 已断开') s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('127.0.0.1', 8888)) s.listen(5) print('等待客户端连接.....') user = 0 while True: sock, addr = s.accept() user += 1 t = threading.Thread(target=onLink, args=(sock, addr, user)) t.start() #客户端 import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('127.0.0.1', 8888)) data = s.recv(1024).decode('utf-8') print('服务器:' + data) while True: data = input('请输入:') if not data or data == 'exit': break s.send(data.encode('utf-8')) print('服务器:' + s.recv(1024).decode('utf-8')) print('与服务器断开连接') s.close()