Python+PIL+qrcode实现二维码自由—普通二维码+彩色二维码+logo二维码+动态二维码(附完整代码)
有时候我们需要自己制作一个二维码,然后进行打印下来,或者说在二维码中提前写上一段话比如搞笑的话,然后印在衣服上,然后穿出去玩!的🤣
那么今天我们分享一下制作二维码的几种方式:
哎,先转库
库名 | 安装 |
---|---|
qrcode | pip install qrcode |
PIL | pip install pillow |
1、最简单的,就两行代码的🤣
qrcode.make("这里可以写上自己想说的话,或者一个网址,网址要完整:Https://www.xxxx.com")
也可以加上
qr.save(".保存路径一图片名字")
import qrcodeqr = qrcode.make("https://www.baidu.com")
qr.show()
# qr.save("./qrcode.png")
2、复杂版(加了几个参数)
version = 7,# 版本号(1-40),数字越大二维码越大,二进制的像素点越密集
error_correction = 2,# 容错率等级2表示容错率等级最高
,容错率等级我记得是1,0,3,2 L:little,M:middle,Q:quite,H:high
box_size = 10, # 像素尺寸,二进制的黑白像素点的边长
border = 4 # 二维码的边框宽度
qr_img.add_data("http://www.baidu.com")
添加想写的文字,或者一个网址,网址记得加上Https://
qr_img.make(fit=True) # fit = True 指的是如果未指定版本号,系统将自动生成相对应的尺寸
img = qr_img.make_image()
# 生成二维码图片
此外,可以给你的二维码加上 前景色以及背景色
在
qr_img.make_image()
在其中加上两个参数前景色
fill_color = 'blue'
背景色
back_color = 'orange')
import qrcodeqr_img = qrcode.QRCode(version = 7,# 版本号(1-40)error_correction = 2,# 容错率等级box_size = 10, # 像素尺寸border = 4 # 边框宽度)
# qr_img.add_data("hello world")
qr_img.add_data("http://www.baidu.com")
qr_img.make(fit=True) # fit = True 指的是如果未指定版本号,系统将自动生成相对应的尺寸
img = qr_img.make_image(# 设置前景色和背景色
fill_color = 'blue',
back_color = 'orange')
img.show()
# img.save("D:\\随笔\\0000.png")
3、图标版,就是中间有个小图片(满满的注释)
import qrcode
from PIL import Imageq
r4 = qrcode.QRCode(version=7,#版本号error_correction=2,#容错率box_size = 10,#格子像素尺寸border=1 #边框宽度 )
qr4.add_data("https://www.baidu.com")
qr4.make(fit=True) #fit=True 意思是版本号如果没写,系统将自动生成版本
qr4 = qr4.make_image(fill_color="orange",back_color="black")
qr4 = qr4.convert("RGB")
# 选择自己的图片
pig=Image.open(r"D:\小猪佩奇.png")
qr4_w,qr4_h = qr4.size # 获得二维码的尺寸
pig_w,pig_h = pig.size # 获得自己图片的尺寸
pig_w,pig_h = qr4_w//4,qr4_h//4 # 将自己图片的宽和高变成二维码图片尺寸的1/4
pig=pig.resize((pig_w,pig_h),1) # 将图片重新生成1/4大小尺寸
w,h = int((qr4_w-pig_w)/2),int((qr4_h-pig_h)/2)# 算出图片贴的坐标
qr4.paste(pig,(w,h)) # 二维码上贴上自己缩小后的图片
qr4.show()
# # qr4.save("D:\\随笔\\myself.png")
4、动态二维码
这个需要安装一个库
pip install MyQR
先准备一张动态图片
代码(运行后等待一会有点慢):
save_dir = "D:\\"
,这是保存路径记住,无需写上二维码保存后的名称保存后的名称在这写:
save_name = "my_qrcode.gif"
os.system("D:\\my_qrcode.gif")
,这一行是打开动语二维码图片
from MyQR import myqr
import os
myqr.run(words = "hello",version = 5,level = "H",picture = r"D:\0.gif",colorized = True,save_name = "my_qrcode.gif",save_dir = "D:\\")
os.system("D:\\my_qrcode.gif")
希望对大家有用!!
致力于办公自动化的小小程序员一枚#
都看到这了,关注+点赞+收藏=不迷路!!
如果你想知道更多关于Python办公自动化的知识各位大佬给个关注吧!
相关文章:

Python+PIL+qrcode实现二维码自由—普通二维码+彩色二维码+logo二维码+动态二维码(附完整代码)
有时候我们需要自己制作一个二维码,然后进行打印下来,或者说在二维码中提前写上一段话比如搞笑的话,然后印在衣服上,然后穿出去玩!的🤣 那么今天我们分享一下制作二维码的几种方式: 哎&#x…...

【Spring Data JPA】JPA 常用查询函数
文章目录 前言函数查询表格 前言 函数查询的表格参考了官网的 2.7.3 版本的文档,JPA 的这种函数式查询方法改动不大,如果想知道更多的复杂查询,可以参考这篇文章 【Spring Data JPA】基于 JpaRepository 增删改查 官方文档地址 Spring Data…...

Visual Studio 2022的MFC框架——AfxWinMain全局对象和InitInstance函数
我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下Visual Studio 2022下开发工具的MFC框架知识。 在看这篇帖子前,请先看我的另一篇帖子《Visual Studio 2022的MFC框架——应用程序向导》。 当程序调用了CWinApp类的构造…...

【网络】多路转接——poll | epoll
🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 书接上文五种IO模型 | select。 poll | epoll 🍧poll🧁认识接口🧁简…...

音视频 ffmpeg命令视频录制(Windows)
先安装dshow软件 Screen Capturer Recorder, 项目地址:https://sourceforge.net/projects/screencapturer/files/ 然后查看可用设备名字:ffmpeg -list_devices true -f dshow -i dummy [dshow 0509d6c0] DirectShow video devices (some ma…...

【拾枝杂谈】从游戏开发的角度来谈谈原神4.0更新
君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,结合最近的学习内容和以后自己的目标,今天又开了杂谈这个新坑,分享一下我在学习游戏开发的成长和自己的游戏理解,当然现在还是一枚…...

QT设置mainwindow的窗口title
QT设置mainwindow的窗口title 在QT程序中,通常会有**aaaa-[bbbbbbb]**这种形式的title,对于刚上手qt的程序员同学,可能会简单的以为修改这种title,就是使用setWindowTitle这个接口,其实只对了一半,这种形式…...

SaaS多租户系统架构设计
前言:多租户是SaaS(Software-as-a-Service)下的一个概念,意思为软件即服务,即通过网络提供软件服务。SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作的实际需求,通过互联网…...

Java自定义捕获异常
需求分析 ElectricalCustomerVO electricalCustomerVO new ElectricalCustomerVO(); electricalCustomerVO.setElcNumber(chatRecordsLog.getDeviceNumber()); List<ElectricalCustomerVO> electricalCustomerlist electricalCustomerMapper.selectElectricalCustomer…...

力扣--数组类题目27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 示例 1: 输入:nums [3,2,2,3], val 3 输出:2, nums [2,2] 解释:函数应该返回新的长度 2, 并且 n…...

实际并行workers数量不等于postgresql.conf中设置的max_parallel_workers_per_gather数量
1 前言 本文件的源码来自PostgreSQL 14.5,其它版本略有不同 PostgreSQL的并行workers是由compute_parallel_worker函数决定的,compute_parallel_worker是估算扫描所需的并行工作线程数,并不是您在postgresql.conf中设置的max_parallel_work…...

java定位问题工具
一、使用 JDK 自带工具查看 JVM 情况 在我的机器上运行 ls 命令,可以看到 JDK 8 提供了非常多的工具或程序: 接下来,我会与你介绍些常用的监控工具。你也可以先通过下面这张图了解下各种工具的基本作用: 为了测试这些工具&#x…...

【Java】基础入门 (十六)--- 异常
1.异常 1.1 异常概述 异常是指程序在运行过程中出现的非正常的情况,如用户输入错误、除数为零、文件不存在、数组下标越界等。由于异常情况再程序运行过程中是难以避免的,一个良好的应用程序除了满足基本功能要求外,还应具备预见并处理可能发…...

[javaWeb]Socket网络编程
网络编程:写一个应用程序,让这个程序可以使用网络通信。这里就需要调用传输层提供的 api。 Socket套接字 传输层提供协议,主要是两个: UDP和TCP 提供了两套不同的 api,这api也叫做socket api。 UDP和 TCP 特点对比: UDP: 无连…...

<MySon car=“宝马“ :money=“money“></MySon>有没有冒号
为什么car"宝马"没有: 但是 :money"money"就有: <script setup> import {ref} from vue import MySon from /components/MySon.vueconst money ref(100) </script><template><h3>father</h3><My…...

netty(三):NIO——多线程优化
NIO多线程优化 使用Boss线程来处理accepct事件使用Worker线程来处理读写事件,可以创建多个worker线程 package com.review;import lombok.extern.slf4j.Slf4j;import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.*; impor…...

Linux操作系统--linux概述
1.Linux概述 Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统(OS)。简单的说就是一种操作系统。在日常中常见的操作系统有一下三种: 2.linux起源和背景 (1).linux的诞生 linux操作系统是由李纳斯托瓦兹…...

数组中出现次数超过一半的数字
⭐️ 题目描述 🌟 OJ链接:数组中出现次数超过一半的数字 思路: 采用投票计数的方式,我们可以把每个数字都看成一次投票并且计数,那么最后剩下来的就是数组中数字出现次数最多的那一个。比如 { 1,2,3,2,2,2,5,4,2 } &a…...

网络优化工程师,你真的了解吗?
一、5G网络优化工程师到底是什么? 5G,就是我们通常所说的第五代移动通信标准,属于目前最热门的新技术趋势。随着2019年5G技术进入正式的商用阶段,拥有广阔的发展前景,备受瞩目。“5G工程师”这个词是一个概念词&#x…...

git 的常用命令
git是一个版本管理器,是程序员必备工具之一,其主分为三个区: 工作区: 暂存区: 仓库: 通过保持软件版本,分支,合并,等多种版本操作,使软件能在自己想要的版本…...

linux如何拷贝文件,删除多余的一级目录,用*号代替所有文件
加上*,代表目录下的所有文件 mv /home/user/dir1/dir1/* /home/user/dir1/可以使用mv命令的通配符来去掉一层目录。 例如,假设有一个名为/home/user/dir1/dir2/file.txt的文件,要将它移动到/home/user/dir2/目录下并去掉dir1目录࿰…...

springboot使用properties
一、方式1: 1.1.配置类: package cn.zyq.stater.config;import cn.zyq.stater.bean.User4; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework…...

Android中获取手机SIM卡的各种信息
通过以下工具类方法可以获取到手机SIM的各种信息数据!!! package com.utils; import android.telephony.TelephonyManager; import com.baidu.platform.comapi.map.E; import org.json.JSONArray; import org.json.JSONObject; import java.…...

matlab 根据索引提取点云
目录 一、语法二、说明三、名称-值对应参数1、输入参数2、输出参数四、代码示例五、结果展示六、参考链接一、语法 ptCloudOut = select(ptCloud,indices) ptCloudOut = select(ptCloud,row,column...

蓝芯、四川邦辰面试(部分)
蓝芯 HTTP请求经过MQ异步处理后,怎样返回结果呢?grpc比起spring cloud的优缺点? 四川邦辰 SkyWalking的埋点具体是怎么操作的?newBing: SkyWalking支持两种埋点方式:自动埋点和手动埋点。自动埋点是指通过SkyWalking…...

openCV实战-系列教程13:文档扫描OCR识别下(图像轮廓/模版匹配)项目实战、源码解读
🧡💛💚💙💜OpenCV实战系列总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 上篇内容: openCV实战-系列教程11:文档扫描OCR识别上&am…...

SpringBootWeb案例 Part 4
3. 修改员工 需求:修改员工信息 在进行修改员工信息的时候,我们首先先要根据员工的ID查询员工的信息用于页面回显展示,然后用户修改员工数据之后,点击保存按钮,就可以将修改的数据提交到服务端,保存到数据…...

什么是ChatGPT水印,ChatGPT生成的内容如何不被检测出来,原理什么?
太长不看版 1. 什么是ChatGPT水印? ChatGPT水印是AI以伪随机方式生成的独特tokens序列。该序列用来作为水印,以区分AI生成内容和人类原创内容。 2. 如何规避ChatGPT水印? 一种规避方法是使用其他AI模型改写ChatGPT生成的文本。这会破坏水…...

Android 6.0 Settings中添加虚拟键开关
添加系统默认键值 b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml-212,4 212,7 <!-- Default for Settings.Secure.NFC_PAYMENT_COMPONENT --><string name"def_nfc_payment_component"></string><!--mh.modify 2019060…...

Yolov8小目标检测(12):动态稀疏注意力BiFormer | CVPR 2023
💡💡💡本文改进:动态稀疏注意力,cvpr2023。 BiFormer | 亲测在红外弱小目标检测涨点,map@0.5 从0.755提升至0.758 💡💡💡Yolo小目标检测,独家首发创新(原创),适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,带你轻松实现小…...