def main(words: str, level='H', version=20, save_dir=getcwd(), save_name=None, picture=None, colorized=True): ''' # 必选参数 + words: 要表示的文字,不支持中文 # 可选参数 + picture: 背景图片路径,可选,默认为空,即生成普通二维码 + save_dir: 生成的二维码存储位置, 默认为当前工作目录 + save_name: 控制文件名, 格式可以是[jpg, png, bmp, gif]. > 使用背景图片默认 >> 背景图片文件名 + '_qrcode.png' > 不使用背景图片默认 >> qrcode.png > 自定义 + level: 纠错等级, 范围是L、M、Q、H,从左到右依次升高, 默认为"H": 超强纠错 + colorized: 是否使用彩色, 默认使用 + version: 二维码边长, 默认为20 ''' run(words=words, version=version, level=level, picture=picture, colorized=colorized, save_name=save_name, save_dir=save_dir)
def Run(self): textRes = self.TextValidator() if textRes != False: try: words = textRes version = self.versionValue.value() level = self.levelValue.currentText() picture = self.pictureValue.text() colorized = self.colorizedValue.isChecked() contrast = self.contrastValue.value() brightness = self.brightnessValue.value() save_name = self.saveValue.text() run(words=words, version=version, level=level, picture=picture, colorized=colorized, contrast=contrast, brightness=brightness, save_name=save_name) except OSError: QMessageBox.critical(self.widget, "失败", "无法将RGBA写入JPG图像,请尝试其他格式") except: QMessageBox.critical(self.widget, "失败", "出现错误") else: QMessageBox.information(self.widget, "成功!", "成功生成二维码") else: QMessageBox.critical(self.widget, "值错误", "文本为空或不支持所输入字符")
def qr(input_file, output_file): url = 'https://github.com/hb36' myqr.run(words=url, picture=input_file, colorized=True, save_name=output_file, save_dir='E:\Python36\projects\qr_code\img')
def GifCode(self): picture = 'Source/cat.gif' myqr.run(words='https://three-year-old.github.io/', picture=picture, colorized=True, save_name='gifqrcode.gif', save_dir=r'C:\Users\mrsong\PycharmProjects\个性二维码\QrCode')
def encode_QR(words, picture=None, colorized=True, save_name="", save_dir=""): if picture != None: picture = picture.strip('''"'"''') pair = os.path.split(picture) if "." not in pair[1]: print("错误的文件名!") return picture_full_name = pair[1].split(".") name = picture_full_name[0] extension = picture_full_name[1] if save_name == "": save_name = name + "_toQR" if "." not in save_name and len(extension) != 0: save_name += "." + extension print("保存文件名为:{}".format(save_name)) save_dir = save_dir if save_dir != "" else os.getcwd() print("保存地址为:{}".format(save_dir)) myqr.run(words, picture=picture, colorized=colorized, save_name=save_name, save_dir=save_dir) path = PathUtil(save_dir + '\\' + save_name) print("生成QR图片已保存到:{}".format(path.get_path()))
def execute(self, bot, update, args): username = update.effective_user.username if not Bismuth.wallet_exists(username): msg = "Accept terms and create a wallet first with:\n/accept" update.message.reply_text(msg) return qr_dir = os.path.join(self.get_plg_path(), self.QRCODES_DIR) os.makedirs(qr_dir, exist_ok=True) qr_name = f"{username}.png" qr_code = os.path.join(qr_dir, qr_name) address = Bismuth.get_address_for(username) if not os.path.isfile(qr_code): logo = os.path.join(self.get_plg_path(), con.DIR_RES, self.BIS_LOGO) myqr.run(address, version=1, level='H', picture=logo, colorized=True, contrast=1.0, brightness=1.0, save_name=qr_name, save_dir=qr_dir) with open(qr_code, "rb") as qr_pic: update.message.reply_photo(photo=qr_pic, caption=f"`{address}`", parse_mode=ParseMode.MARKDOWN)
def QR_Code(self): if re.match(r'^https?:/{2}\w.+$', self.url.get()): #視頻鏈接獲取 ip = self.url.get() #視頻鏈接加密 ip = parse.quote_plus(ip) url = 'http://www.wmxz.wang/video.php?url=%s' % ip words = url images_pwd = os.getcwd() + '\Images\\' png_path = images_pwd + 'bg.png' qr_name = 'qrcode.png' qr_path = images_pwd + 'qrcode.png' run(words=words, picture=png_path, save_name=qr_name, save_dir=images_pwd) top = tk.Toplevel(self.root) img = tk.PhotoImage(file=qr_path) text_label = tk.Label(top, fg='red', font=('楷體', 15), text="手機瀏覽器掃描二維碼,在線觀看視頻!") img_label = tk.Label(top, image=img) text_label.pack() img_label.pack() top.mainloop() else: msgbox.showerror(title='錯誤', message='視頻鏈接地址無效,請重新輸入!')
def PicCode(self): picture = 'Source/erdou.png' myqr.run(words='https://three-year-old.github.io/', picture=picture, colorized=True, save_name='picqrcode.png', save_dir=r'C:\Users\mrsong\PycharmProjects\个性二维码\QrCode')
def toDownload(self, event): # 判断是否存在二维码背景图,不存在则设为空 picture = os.getcwd() + "/ecour/spider/images/raw.jpg" print(picture) if not os.path.exists("ecour/spider/images/raw.jpg"): picture = "" # 如果该二维码不存在则重新生成 if not os.path.exists("ecour/spider/images/qrcode.png"): if not os.path.exists(os.getcwd() + "/ecour/spider/images"): os.makedirs(os.getcwd() + "/ecour/spider/images") myqr.run( words="https://github.com/Ion-wu/BookSpider", version=10, # 版本控制边长,1-40,正比 level='H', # 纠错等级,低到高:L、M、Q、H picture=picture, # 文件放在同目录下(源文件) colorized=True, # True 为彩色 contrast=1.0, # 对比度 brightness=1.0, # 亮度 save_name="qrcode.png", # 存储文件命名,格式可以是JPG、PNG、BMP、GIF save_dir=os.getcwd() + "/ecour/spider/images") # 存储路径 img = Image.open("ecour/spider/images/qrcode.png") plt.figure("Down") plt.title("github") plt.axis(False) plt.imshow(img) plt.show()
def myself_make_qr_code(): myqr.run(words='I Love You ', level='H', picture='dongtu.gif', colorized=True, save_name='qrcode.gif', save_dir=os.getcwd())
def run_halftone(words, version=1, level='H', picture=None, colorized=False, contrast=1.0, brightness=1.0): m = hashlib.md5() m.update(str(time.time())) qrname = m.hexdigest() + "." + picture.split('.')[-1] run(words=words, version=version, level=level, picture=picture, colorized=colorized, contrast=contrast, brightness=brightness, save_name=qrname, save_dir=config.GLOBAL['TEMP_PATH']) return qrname
def QR_Code(self): if re.match(r'^https?:/{2}\w.+$', self.url.get()): # 视频链接获取 ip = self.url.get() # 视频链接加密 ip = parse.quote_plus(ip) url = 'http://www.wmxz.wang/video.php?url=%s' % ip words = url images_pwd = os.getcwd() + '\Images\\' png_path = images_pwd + 'bg.png' qr_name = 'qrcode.png' qr_path = images_pwd + 'qrcode.png' from MyQR.myqr import run run(words=words, picture=png_path, save_name=qr_name, save_dir=images_pwd) top = tk.Toplevel(self.root) img = tk.PhotoImage(file=qr_path) text_label = tk.Label(top, fg='red', font=('楷体', 15), text="手机浏览器扫描二维码,在线观看视频!") img_label = tk.Label(top, image=img) text_label.pack() img_label.pack() top.mainloop() else: msgbox.showerror(title='错误', message='视频链接地址无效,请重新输入!')
def generate_qr(site, saveName, saveDir): """生成二维码""" myqr.run( words=site, save_dir=saveDir, save_name=saveName, )
def static_qrcode(): myqr.run( words = "https://github.com/SamLiu666", # 想要生成的内容 picture="git.jpg", # 二维码加载图片 colorized=True, save_name="test.png" # 存储名称 )
def QR_Code(self): if re.match(r'^https?:/{2}\w.+$', self.url.get()): #视频链接获取 ip = self.url.get() #视频链接加密 ip = parse.quote_plus(ip) url = 'http://www.wmxz.wang/video.php?url=%s' % ip words = url images_pwd = os.getcwd() + '\Images\\' png_path = images_pwd + 'bg.png' qr_name = 'qrcode.png' qr_path = images_pwd + 'qrcode.png' run(words = words, picture = png_path, save_name = qr_name, save_dir = images_pwd) top = tk.Toplevel(self.root) img = tk.PhotoImage(file = qr_path) text_label = tk.Label(top, fg = 'red', font = ('楷体',15), text = "手机浏览器扫描二维码,在线观看视频!") img_label = tk.Label(top, image = img) text_label.pack() img_label.pack() top.mainloop() else: msgbox.showerror(title='错误',message='视频链接地址无效,请重新输入!')
async def qrinvite( self, ctx: commands.Context, invite: str = None, colorized: bool = False, image_url: str = None, ): """ Create a custom QR code invite for this server """ if invite is None: try: invite = await ctx.channel.create_invite() except discord.Forbidden: try: invite = await ctx.channel.invites() invite = invite[0] except discord.Forbidden: await ctx.send("No permission to get an invite, please provide one") return invite = invite.code if image_url is None: image_url = ctx.guild.icon_url if image_url == "": # Still await ctx.send( "Could not get an image, please provide one. *(`{}help qrinvite` for details)*".format( ctx.prefix ) ) return extension = pathlib.Path(image_url).parts[-1].replace(".", "?").split("?")[1] path: pathlib.Path = cog_data_path(self) image_path = path / (ctx.guild.icon + "." + extension) async with aiohttp.ClientSession() as session: async with session.get(image_url) as response: image = await response.read() with image_path.open("wb") as file: file.write(image) if extension == "webp": new_path = convert_png(str(image_path)) else: new_path = str(image_path) myqr.run( invite, picture=new_path, save_name=ctx.guild.icon + "_qrcode.png", save_dir=str(cog_data_path(self)), colorized=colorized, ) png_path: pathlib.Path = path / (ctx.guild.icon + "_qrcode.png") with png_path.open("rb") as png_fp: await ctx.send(file=discord.File(png_fp.read(), "qrcode.png"))
def generate_qr_code(url, fileName): # 将URL转化为指定名称的二维码文件 myqr.run(url, version=10, level='H', save_name=fileName, picture='200.jpg', colorized=True)
def demo07(): from MyQR import myqr myqr.run( words='http://www.baidu.com', # 包含信息 picture='./img/lena.jpg', # 背景图片 colorized=True, # 是否有颜色,如果为False则为黑白 save_name='result7.png' # 输出文件名 )
def get(): _in_pic = var2.get() _in = var3.get() if _in_pic == '默认': myqr.run(words=var1.get()) else: colorized = _in == 'N' myqr.run(words=var1.get(), picture=_in_pic, colorized=colorized)
def scanqr(bookname): conn = pymysql.connect('localhost', 'root', '', 'library') cursor = conn.cursor() sql = "SELECT * FROM books WHERE state2 = 1 and state1 = 1" cursor.execute(sql) results = cursor.fetchall() floor1=0 floor2=0 floor3=0 #生成二维码 for row in results: place = row[1] place=place.split("-") myqr.run(words=getPinYin(row[0]),save_name='floor'+place[0]+'\\'+getPinYin(row[0])+'.jpg') img=cv2.imread('floor'+place[0]+'\\'+getPinYin(row[0])+'.jpg') cv2.imwrite('floor'+place[0]+'\\'+getPinYin(row[0])+'.jpg',cv2.resize(img,(300,300))) if place[0] == '01': floor1=floor1+1 elif place[0] == '02': floor2=floor2+1 elif place[0] == '03': floor3=floor3+1 #将二维码集合到一张图内 allimg01 = Image.new('RGB', (20+400*floor1, 400), (255, 255, 255)) allimg02 = Image.new('RGB', (20+400*floor2, 400), (255, 255, 255)) allimg03 = Image.new('RGB', (20+400*floor3, 400), (255, 255, 255)) floor1=0 floor2=0 floor3=0 for row in results: place = row[1] place=place.split("-") if place[0] == '01': img=Image.open('floor'+place[0]+'\\'+getPinYin(row[0])+'.jpg') allimg01.paste(img,(20+floor1*380,20)) floor1=floor1+1 os.remove('floor'+place[0]+'\\'+getPinYin(row[0])+'.jpg') elif place[0] == '02': img=Image.open('floor'+place[0]+'\\'+getPinYin(row[0])+'.jpg') allimg02.paste(img,(20+floor2*380,20)) floor2=floor2+1 os.remove('floor'+place[0]+'\\'+getPinYin(row[0])+'.jpg') elif place[0] == '03': img=Image.open('floor'+place[0]+'\\'+getPinYin(row[0])+'.jpg') allimg03.paste(img,(20+floor3*380,20)) floor3=floor3+1 os.remove('floor'+place[0]+'\\'+getPinYin(row[0])+'.jpg') allimg01.save('floor01\\allimg01.jpg') allimg02.save('floor02\\allimg02.jpg') allimg03.save('floor03\\allimg03.jpg') bookplace = getbooksplace(bookname) allimg=Image.open('floor'+bookplace[0]+'\\'+'allimg'+bookplace[0]+'.jpg') test = pyzbar.decode(allimg) for tests in test: testdate = tests.data.decode('utf-8') if getPinYin(bookname) == testdate: return 1 return 0
def make_QR(filename, words): if not os.path.exists(filename): print('未找到背景文件,请检查文件名称') else: myqr.run(words=words.encode('utf-8'), picture='panda.gif', colorized=True, save_name='qingfeng.gif')
def generate_complex(): myqr.run( words="Welcome to zihan's blog", version=5, level="H", picture="./image/girl.jpg", colorized=True, # True为彩色 False为黑白 save_name="girl.png", save_dir=os.getcwd() + "/image")
def img_code(): myqr.run(words='https://niit-soft.oss-cn-hangzhou.aliyuncs.com/soft1851/foru.png', version=1, level='H', picture='./res/img/code2.png', colorized=True, contrast=1.0, brightness=1.0, save_name='code5.png', save_dir=os.getcwd()+'/res/img/')
def get_qr(word, username, picture): myqr.run(word, version=1, level='H', picture=picture, colorized=True, contrast=1.0, brightness=1.0, save_name=username, save_dir='static/images/')
def post(self, request): file_obj = request.FILES.get('file') text = request.POST['src'] image_format = ['.jpg', '.png', '.bmp', '.gif'] format_2 = file_obj.name[-4:] if text[5:10] != 'image' or format_2 not in image_format: return JsonResponse({"msg": "Not_Img"}) index = text.find('base64,') cache_data = text[index + len('base64,'):] data = base64.b64decode(cache_data) f = BytesIO() f.write(data) cache_img = Image.open(f) qr_data = decode(cache_img) if not qr_data: return JsonResponse({"msg": "No_QRCode"}) qr_text = qr_data[0].data.decode('utf8') path = os.getcwd() + '\static\img\\' try: if format_2 == '.gif': if os.path.exists(path + 'back.gif'): os.remove(path + 'back.gif') save_back_gif = default_storage.save( path + 'back.gif', ContentFile(file_obj.read())) myqr.run(qr_text, picture=path + 'back.gif', colorized=True, save_name='final.gif', save_dir=os.getcwd() + '\static\img') with open(path + 'final.gif', 'rb') as file: byte = file.read() image_base64 = base64.b64encode(byte) return JsonResponse({ "msg": 'gif', "code": bytes.decode(image_base64, 'utf8') }) else: if os.path.exists(path + 'back.png'): os.remove(path + 'back.png') save_back_png = default_storage.save( path + 'back.png', ContentFile(file_obj.read())) myqr.run(qr_text, picture=path + 'back.png', colorized=True, save_name='final.png', save_dir=os.getcwd() + '\static\img') with open(path + 'final.png', 'rb') as file: byte = file.read() image_base64 = base64.b64encode(byte) return JsonResponse({ "msg": 'png', "code": bytes.decode(image_base64, 'utf8') }) except ValueError: return JsonResponse({"msg": "chinese"})
def main(): #QRCode()这里我们创建了一个对象: qr = qrcode.QRCode(version=5, error_correction=qrcode.constants.ERROR_CORRECT_H, box_size=8, border=4) #version:值为1~40的整数,控制二维码的大小(最小值是1,是个21×21的矩阵) #error_correction:控制二维码的错误纠正功能。可取值下列4个常量: ''' qrcode.constants.ERROR_CORRECT_X: 1. X=L时,大约7%或更少的错误能被纠正。 2. X=M(默认)时,大约15%或更少的错误能被纠正。 3. X=Q时,25%以下的错误会被纠正。 4. X=H时,大约30%或更少的错误能被纠正。 ''' #box_size:控制二维码中每个小格子包含的像素数。 #border:控制边框(二维码与图片边界的距离)包含的格子数(默认为4) #向二维码中添加信息 qr.add_data("http://www.jason-niu.com") qr.make(fit=True) img = qr.make_image() #二维码设置为彩色 img = img.convert('RGBA') #打开logo图片 logo = Image.open("bit.png") #二维码尺寸 img_w, img_h = img.size #默认LOGO最大设为图片的1/4 factor = 4 #最大logo尺寸 size_w = int(img_w / factor) size_h = int(img_h / factor) #logo的尺寸 logo_w, logo_h = logo.size if logo_w > size_w or logo_h > size_h: logo_w = size_w logo_h = size_h logo = logo.resize((logo_w, logo_h), Image.ANTIALIAS).convert('RGBA') l_w = int((img_w - logo_w) / 2) l_h = int((img_h - logo_h) / 2) img.paste(logo, (l_w, l_h), logo) img.show() img.save('bitcode.png') #生成一个带动态gif的二维码 myqr.run(words="https://www.baidu.com", picture='1.gif', colorized=True, save_name='2.gif', save_dir=os.getcwd())
def generate_erweima(words, path, save_name, save_dir=None): myqr.run( words=words, version=5, picture=path, colorized=True, save_name=save_name, save_dir=save_dir or os.getcwd(), ) with Image.open(save_name) as img: img.show()
def blackQR(): # 黑白二维码 picture_name = input("请输入背景照片名称:") message = input("请输入要保存的信息:") save_name = input("请输入要保存二维码名字:") myqr.run( words="{}".format(message), picture='ImageSources/{}.jpg'.format(picture_name), save_name='{}.png'.format(save_name), save_dir='SaveImages/', )
def get_qrcode(): url = request.args.get('url') if url is None: return abort(404, "url parameter is required") cur_qr_name = md5(url.encode()).hexdigest() + '.png' if not exists(MEDIA_ROOT + cur_qr_name): myqr.run(url, version=5, picture=BACKGROUND_IMAGE, save_dir=MEDIA_ROOT, save_name=cur_qr_name) return send_file(MEDIA_ROOT + cur_qr_name)
def img_code(): myqr.run( words= 'https://niit-student.oss-cn-beijing.aliyuncs.com/markdown/ZNJ3(_A`3A)M~5G7`MCP3YD.png', version=1, level='H', picture='./res/img/lvye.png', colorized=True, contrast=1.0, brightness=1.0, save_name='code2.png', save_dir=os.getcwd() + '/res/img/')
def Dynamic(): # 动态二维码 picture_name = input("请输入动图文件名:") message = input("请输入要保存的信息:") save_name = input("请输入要保存二维码名字:") myqr.run( words="{}".format(message), picture='ImageSources/{}.gif'.format(picture_name), colorized=True, save_name='{}.gif'.format(save_name), save_dir='SaveImages', )
def main(): import argparse argparser = argparse.ArgumentParser() argparser.add_argument('Words', help = 'The words to produce you QR-code picture, like a URL or a sentence. Please read the README file for the supported characters.') argparser.add_argument('-v', '--version', type = int, choices = range(1,41), default = 1, help = 'The version means the length of a side of the QR-Code picture. From little size to large is 1 to 40.') argparser.add_argument('-l', '--level', choices = list('LMQH'), default = 'H', help = 'Use this argument to choose an Error-Correction-Level: L(Low), M(Medium) or Q(Quartile), H(High). Otherwise, just use the default one: H') argparser.add_argument('-p', '--picture', help = 'the picture e.g. example.jpg') argparser.add_argument('-c', '--colorized', action = 'store_true', help = "Produce a colorized QR-Code with your picture. Just works when there is a correct '-p' or '--picture'.") argparser.add_argument('-con', '--contrast', type = float, default = 1.0, help = 'A floating point value controlling the enhancement of contrast. Factor 1.0 always returns a copy of the original image, lower factors mean less color (brightness, contrast, etc), and higher values more. There are no restrictions on this value. Default: 1.0') argparser.add_argument('-bri', '--brightness', type = float, default = 1.0, help = 'A floating point value controlling the enhancement of brightness. Factor 1.0 always returns a copy of the original image, lower factors mean less color (brightness, contrast, etc), and higher values more. There are no restrictions on this value. Default: 1.0') argparser.add_argument('-n', '--name', help = "The filename of output tailed with one of {'.jpg', '.png', '.bmp', '.gif'}. eg. exampl.png") argparser.add_argument('-d', '--directory', default = os.getcwd(), help = 'The directory of output.') args = argparser.parse_args() if args.picture and args.picture[-4:]=='.gif': print('It may take a while, please wait for minutes...') try: ver, ecl, qr_name = run( args.Words, args.version, args.level, args.picture, args.colorized, args.contrast, args.brightness, args.name, args.directory ) print('Succeed! \nCheck out your', str(ver) + '-' + str(ecl), 'QR-code:', qr_name) except: raise