Python使用照片刻字与表白

简介: 笔记

原理介绍


  1. 运用到Pillow,没有安装的使用 pip install Pillow安装即可
  2. 将要刻的字放到图片像素里面

实现思路


  1. 创建文案信息:文案内容,像素尺寸,字体类型,图片路径:
  2. 创建小图来填充内容,再创建大图填充好小图内容;
  3. 循环遍历图片内的像素点,把文字粘贴上去。

实现代码:


# -*- coding:utf-8 -*-
# @Time   : 2021-12-20
# @Author : 他们叫我技术总监
import time
import tkinter as tk#导入tkinter包
import datetime as dt
from tkinter import filedialog
from  PIL import Image,ImageDraw,ImageFont
now_time=dt.datetime.now().strftime('%F%T')
now_time=now_time.replace(':','')
#print(now_time)
#像素放大尺寸
img_king_size = 20
#输入内容
print("-----------------照片刻字器----------------------------")
text =input("请输入你要刻的字:") #'我爱你春春小公主'
print("刻字为:"+text)
time.sleep(1)
#设置字体
font = ImageFont.truetype('simsun.ttc',img_king_size)
print("请选择刻字的图片")
#图片路径
#获取用户打开的文件路径名
root=tk.Tk()
#
#Folderpath=filedialog.askdirectory()#获取选择好的文件夹
Filepath=filedialog.askopenfilename()#获取选择好的文件
print("文件名:",Filepath)
root.withdraw
img_path =Filepath #'./520.jpg'
#避免卡顿,sleep 2秒
time.sleep(2)
#打开图片
img = Image.open(img_path)
img_w,img_h = img.size
#创建一个小图,用于填充字体
img_child = Image.new("RGB", (img_king_size, img_king_size))
#创建一个大图,状态填充好的小图字体
img_ans = Image.new("RGB",(img_w * img_king_size,img_h * img_king_size))
#获取单个文字的宽和高
text_w,text_h = font.getsize('中')
#文字水平居中
offset_x = (img_king_size - text_w) >> 1
#文字垂直居中
offset_y = (img_king_size - text_h) >> 1
char_index = 0
#小图用于绘制文字
draw = ImageDraw.Draw(img_child)
#循环遍历原图的每一个像素点
for x in range(img_w):
    for y in range(img_h):
        #绘制背景,让图片更好看
        draw.rectangle((0,0,img_king_size,img_king_size),fill = 'lightgray')
        #用(x,y)处的像素点的色值进行绘制字体
        draw.text((offset_x,offset_y),text[char_index],font = font,fill = img.getpixel((x,y)))
        img_ans.paste(img_child,(x * img_king_size,y * img_king_size))
        char_index = (char_index + 1) % len(text)
img_ans.save(now_time+'520-letter.jpg')
finishpt=now_time+'-520letter.jpg'
print("成功生成你表白的照片"+finishpt+",请查收~")

运行效果图:

  1. 用户可以输入自定义的刻字
  2. 选择需要刻字的内容
  3. 等待加载......
  4. 完成后自动生成完成报告
相关文章
|
7月前
|
Python
Python无法拒绝的表白界面完整代码
Python无法拒绝的表白界面完整代码
122 0
|
7月前
|
Python
Python无限弹窗表白完整代码
Python无限弹窗表白完整代码
157 0
|
7月前
|
Python
Python满屏飘字表白完整代码
Python满屏飘字表白完整代码
310 0
|
存储 程序员 Python
Python浪漫520表白代码
Python浪漫520表白代码
423 0
|
Python
送给她最最浪漫的表白(Python代码实现)
送给她最最浪漫的表白(Python代码实现)
147 0
|
2月前
|
机器学习/深度学习 编解码 Python
python将照片集变成视频
`shigen`是一位坚持更新文章的博客作者,记录成长历程,分享认知见解,留住生活感动。他利用Python库`Pillow`和`MoviePy`开发了一个工具,能够批量处理照片并生成高质量视频。该工具支持多种分辨率、自定义播放时间和照片方向,并能自动调整照片比例以实现居中对齐。通过简单的代码实现了照片视频化的需求,适合强迫症患者使用。**与shigen一起,每天不一样!**个人IP:shigen。
52 9
python将照片集变成视频
|
2月前
|
Python
用 Python 读取照片的 Exif 信息(顺便说说本人的一些想法)
用 Python 读取照片的 Exif 信息(顺便说说本人的一些想法)
96 2
|
3月前
|
数据安全/隐私保护 计算机视觉 Python
用python给照片添加水印的三种方式
这篇文章介绍了使用Python给照片添加水印的三种方式:通过PIL库直接添加文本水印、使用OpenCV库结合图像处理功能添加水印,以及使用filestools库进行更为简便的水印添加。
149 7
|
4月前
|
Python
Python — 四款表白代码送给喜欢的那个她(他)
【8月更文挑战第10天】仅以此篇文章(4个表白代码,每一个都有不一样的惊喜,代码附上了详细注释,方便大家根据注释修改),祝愿轻舟所有的读者得遇良人;七夕快乐~
1750 8
Python — 四款表白代码送给喜欢的那个她(他)
520专属——使用Python代码表白究竟能不能成功?
520,谐音:“我爱你”,一直觉得,520真正的意义,不单是用于表达爱,也不是为了收礼物和红包,而是提醒我们,不要忘记爱与被爱。 废话不多说,下面整理了9个效果图和参考代码,感兴趣的朋友可以看看