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. 完成后自动生成完成报告

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 62
    评论
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他们叫我技术总监

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值