import os
import qrcode
from PIL import Image, ImageDraw# 设置圆角
def circle_crop_image(im, radii):# 创建一个黑色背景的画布circle = Image.new('L', (radii * 2, radii * 2), 0)# 画黑色方形draw = ImageDraw.Draw(circle)# 画白色圆形draw.ellipse((0, 0, radii * 2, radii * 2), fill=255)# 把原图转换成RGBA模式,增加alpha通道img = im.convert("RGBA")w, h = img.size# 画4个角(将整圆分离为4个部分)再粘贴到alpha通道alpha = Image.new('L', img.size, 255)# 左上角alpha.paste(circle.crop((0, 0, radii, radii)), (0, 0))# 右上角alpha.paste(circle.crop((radii, 0, radii * 2, radii)), (w - radii, 0))# 右下角alpha.paste(circle.crop((radii, radii, radii * 2, radii * 2)), (w - radii, h - radii))# 左下角alpha.paste(circle.crop((0, radii, radii, radii * 2)), (0, h - radii))# 白色区域透明可见,黑色区域不可见img.putalpha(alpha)return img# 生成二位码
def create_qr_code(content, file_name):qr = qrcode.QRCode(version=5,# 设置容错率为最高error_correction=qrcode.ERROR_CORRECT_H,box_size=5,border=1,)qr.add_data(content)qr.make(fit=True)img = qr.make_image()img = img.convert("RGBA")icon_path = 'logo.png'icon = Image.open(icon_path)# 把RGB的图转换成RGBA模式,处理alpha透明通道(后边替换透明为白色)icon = icon.convert("RGBA")w, h = img.sizeicon_w, icon_h = icon.size# 超过80的压缩到80if icon_w > 50:icon = icon.resize((50, 50), Image.ANTIALIAS)icon_w, icon_h = icon.sizew = int((w - 50) / 2)h = int((h - 50) / 2)else:w = int((w - icon_w) / 2)h = int((h - icon_h) / 2)# 把png背景色转换为白色,避免处理裁剪圆角时出现黑边w_d = Image.new('RGBA', icon.size, (255, 255, 255))w_d.paste(icon, (0, 0, icon_w, icon_h), icon)# r = icon_w // 15r = 6icon = circle_crop_image(w_d, r)# 白底图white_img = Image.new("RGBA", (icon_w + 6, icon_h + 6), (255, 255, 255))white_img = circle_crop_image(white_img, r)# 灰底图gray_img = Image.new("RGBA", (icon_w + 2, icon_h + 2), (230, 230, 230))# 灰底图圆角处理gray_img = circle_crop_image(gray_img, r)# 粘贴灰底图white_img.paste(gray_img, (2, 2), gray_img)# 粘贴白图img.paste(white_img, (w - 2, h - 2), white_img)# 粘贴iconimg.paste(icon, (w + 1, h + 1), icon)save_file = os.path.join('pics', 'code', file_name + '.png')#save_file = save_path + file_name + '.png'print(f"{save_file=}")img.save(save_file, quality=100)# img.show()#return save_fileif __name__ == '__main__':create_qr_code('http://www.thecover.cn', 'bbb')

生成带logo的二维码相关推荐

  1. iOS 生成带 logo 的二维码,区域截屏保存至相册(小功能二连发 (一))

    原文链接:http://www.jianshu.com/p/36e9f012ef39 生成带 logo 的二维码 区域截屏相关 -- 由3033分享 开篇 最近项目需要搞了几个相对独立的小功能,今天有 ...

  2. zxing生成带logo的二维码

    倒Zxing依赖 implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.2.1' 代码段 import android.graphics.Bitma ...

  3. Android Studio 生成二维码、生成带logo的二维码

    1.生成二维码: 2.生成logo的二维码: 一.引入依赖 首先在libs文件目录下放进jar包zxing.jar,要下载zxing.jar就点击链接:下载zxing.jar(记得点击"Cd ...

  4. 使用zxing生成带logo的二维码图片,自动调节logo图片相对二维码图片的大小

    使用zxing生成带logo的二维码图片,自动调节logo图片相对二维码图片的大小  * 可选是否带logo,可选是否保存二维码图片:结果返回base64编码的图片数据字符串  * 页面显示:< ...

  5. asp.net 后台生成二维码及生成带logo的二维码

    asp.net 后台生成二维码及生成带logo的二维码,此处将生成二维码和带Logo的二维码写在一起的,需要自己区分一下. 直接上代码 using System; using System.Colle ...

  6. vue 生成带logo的二维码 qrcode-vue 支持下载图片 实例详解

    最近的项目上有个需求,生成带logo的二维码,网上大部分都是基于JQ插件jQuery.qrcode.对于vue项目并不适用,翻阅了大量资料后,我找到了qrcode-vue这款基于vue的生成二维码的插 ...

  7. Golang使用qrcode生成二维码,以及生成带logo的二维码

    添加并引用依赖 go get github.com/boombuler/barcodeimport ("github.com/skip2/go-qrcode" ) 1.生成字节形式 ...

  8. .NET ZXING 生成带logo的二维码和普通二维码及条型码

    工作中使用到了,就随笔记下了.希望可以帮助有需要的同学们. /// <summary>         /// 生成二维码         /// </summary>     ...

  9. Android Studio 扫描识别二维码(包含闪光灯和本地二维码)、生成二维码、生成带logo的二维码

    一.测试如下: 1.扫描识别二维码,扫描结果多少 2.生成二维码.生成带logo的二维码 二.添加依赖: 1.在Project的build.gradle中添加maven { url 'https:// ...

  10. jQuery生成带Logo的二维码

    用zxing生成二维码并解析:https://blog.csdn.net/qq_41879385/article/details/81320723 用QR Code生成和解析二维码文章地址:https ...

最新文章

  1. 如何用TensorFlow在安卓设备上实现深度学习推断
  2. 小米air耳机重新配对_小米发布 399 元真无线蓝牙耳机,除了小爱同学还支持其他手机语音助手...
  3. 中国速度之二神山建设(2):完善的项目计划,高效能价值流 | IDCF DevOps案例研究...
  4. 学习10:Python重要知识
  5. uniapp ajax数据库查询,uniapp小程序登录、数据请求方式
  6. Django框架—富文本编辑器
  7. golang http 返回html文件_用Golang写爬虫(三) - 使用goquery
  8. JavaScript中的数据类型和数据类型转换
  9. c#简易学生信息管理系统
  10. Jmeter安装及简单使用
  11. html播放m3u8格式转换,m3u8格式如何播放
  12. 谷歌翻译(英文PDF文档翻译成中文,免费无限制)
  13. 百度搜索关键词自动提交
  14. 【原创】超级详细的iPhone铃声制作、导入、设置全过程教程
  15. 关于迭代速度很快的解决方案
  16. 02、Verilog例化说明
  17. 【华为上机真题】分子弹
  18. java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署
  19. C语言——初识关键字、static、#define定义、指针
  20. Nature Medicine 揭示冠状动脉疾病的个体危险因素

热门文章

  1. 纯电动汽车两档ATM变速箱simulink模型,模型实现了两档AMT换挡策略和换挡过程仿真
  2. ESP32S蓝牙05
  3. L02 Laravel 教程 - Web 开发实战进阶 - 笔记
  4. 3.2 写一个UR机器人运动学库
  5. Android studio emulator 无法打开的解决办法
  6. c#获取word文件页数、字数
  7. 前端如何显示服务器摄像头,浏览器显示海康摄像头实时预览画面纯前端解决方案...
  8. 计算机里面不显示光驱位硬盘,Windows10系统识别不了光驱位机械硬盘怎么办?解决方法...
  9. Unity学习之Human fall flat创意工坊地图制作
  10. AD20的最全安装步骤