imge.show()在Liunx下可能不行。
ps:标准版本的show()方法不是很有效率,因为它先将图像保存为一个临时文件,然后使用xv进行显示。如果没有安装xv,该函数甚至不能工作。但是该方法非常便于debug和test。(windows中应该调用默认图片查看器打开)
代码如下:
#-*-coding:utf-8-*-
#这是一个二维码的生成代码
import qrcode
import os
from PIL import Image
import Pillow
print()
class QrCode():
def __init__(self, version=8,
error_correction=qrcode.constants.ERROR_CORRECT_H,
box_size=4,
border=1,
save_path_name="二维码",
cont='您的二维码信息没有生成,请重试',
path='',
logo=''
):
self.version=version #值范围为1~40,控制二维码的大小, None 并使用 fit 参数即可
self.error_correction=error_correction#纠错能力 _L约7%,_M约15%,_H约30%
self.box_size=box_size#控制二维码中每个小个子包含的像素数
self.border=border#边框值,最小为4
self.name=save_path_name
self.cont=cont
self.save_path_name=save_path_name
self.logo = logo
print ("我已经有了二维码的属性")
def Save(self):
qr = qrcode.QRCode(
version=self.version,
error_correction=self.error_correction,
box_size=self.box_size,
border=self.border,
)
qr.add_data(self.cont)
qr.make(fit=True)
img = qr.make_image()
img = img.convert('RGBA')
icon = Image.open(self.logo)
img_w, img_h = img.size
factor = 1/4
size_w,size_h = (int(img_w*factor),int(img_h*factor))
icon = icon.resize((size_w,size_h), Image.ANTIALIAS)
w,h = (int(img_w*(1-factor)/2),int(img_h*(1-factor)/2))
icon =icon.convert('RGBA')
img.paste(icon,(w,h),icon)
img.save(self.save_path_name)
img.show()
#print ("二维码已经生成,存在当前目录下")
#image=Image.open(self.name+'.png')
#image.show()
#os.system("explorer.exe %s" %os.getcwd()) 打开当前文件夹,win下使用
a=QrCode(cont="http://www.jb51.net/article/58579.htm",save_path_name='/home/fuhan/fuhan.jpg',logo='/home/fuhan/a.jpg')
a.Save()