摘要: 每到情人节、七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题——怎么给女朋友/老婆一个与众不同的节日惊喜。今天给大家分享一个独特的表白方法——用“我爱你”拼出心爱人的模样!
每到情人节、七夕节,不少小伙伴大伙伴们都会遇到这样一个世纪问题——怎么给女朋友/老婆一个与众不同的节日惊喜。
你说送花吧,到时候朋友圈里一划,全部都是送花的,女票:“没创意!”,遂卒;
你说送礼物吧,要是送的礼物不合心意,女票:“你根本不懂我!”,又卒;
你说逛街买买买吧,摸摸空空的口袋,默默把这个想法丢到一边...
今天,就和大家分享一个独特的表白方法——用“我爱你”拼出心爱人的模样!
成品图!
什么?看不清长啥样?放大来康康
想做出这样的照片吗?那么~我们现在就开始啦~
一. 需要准备的有
女票超级无敌可爱美腻的照片 1张!
python (这里用的是python3.7)
需要的用到的库
cv2:用来读取照片
PIL:用来生成新的图片
性能比较OK的电脑
(如果没有接触过python,不想/不会配环境、装cv2、PIL之类的库,或者电脑性能不太够,强烈推荐使用华为云的ModelArts进行开发~直接解决环境配置、电脑性能的各种问题~)
二. 基本思路
要实现这样的效果,首先需要有一张照片,提取其像素信息,然后赋给排布满文字的新图片,就能得到如上图所示的一张新图片啦!
废话不多说,接下来就开始吧~
三.操作流程
1.首先导入用到的库(两者的作用在1中已有介绍)
from PIL import Image, ImageDraw, ImageFont
2.然后开始声明绘图的方法
这里有两个参数,分别是原图片的路径和要写的文字
def draw(pic, draw_text):
3.接着读取图片
使用cv2中的imread方法读取图片信息,
使用PIL中的Image方法创建一个新的图片,其尺寸和源图片一致,背景为白色
blank = Image.new("RGB", [img.shape[1], img.shape[0]], "white")
drawObj = ImageDraw.Draw(blank) # 告诉程序,我们接下来就要在这个图上写字啦!
4.声明绘图的一些参数(这些参数都是我经过多次试验得到的最佳大小~)
m = 9 # 字体的大小
font_path = '你使用字体的位置' # 字体的路径
font = ImageFont.truetype(font_path, size=m) # 将字体信息赋给font变量,供后续使用
5.接下来就是最关键的一步!把文字写上去,并按照源图片给图片上色
通过两个for循环,依次定位到每个文字所在的色块(中间间隔n是因为文字比像素块大得多,不可能完全按照每个像素的位置和色彩来排布)
使用text()方法填入带色彩的文字,几个参数分别代表:
[j, i] -- 坐标位置
draw_text[int(j / n) % len(draw_text)] -- 找到当前该写入哪个文字了(比如“我爱你”中的第几个字)
fill=(img[i][j][2], img[i][j][1], img[i][j][0]) -- 代表源图片对应位置的颜色(三个分别代表RBG颜色值)
for i in range(0, img.shape[0], n):
for j in range(0, img.shape[1], n):
drawObj.text(
[j, i],
draw_text[int(j / n) % len(draw_text)],
fill=(img[i][j][2], img[i][j][1], img[i][j][0]),
font=font
) # 按句子的顺序填充文字
6.写入完成,导出图片
7.调用我们封装好的方法~
输入图片路径和目标文字,运行~一张独一无二的表白图就大功告成!
draw('1.jpg', "我爱你")
附上全代码(记得把字体路径改成自己电脑的哟~)
from PIL import Image, ImageDraw, ImageFont def draw(pic, draw_text): img = cv2.imread(pic) blank = Image.new("RGB", [img.shape[1], img.shape[0] ], "white") drawObj = ImageDraw.Draw(blank) n = 10 m = 9 font = ImageFont.truetype(font_path, size = m) for i in range(0, img.shape[0], n): for j in range(0, img.shape[1], n): drawObj.text( [j, i], draw_text[int(j / n) % len(draw_text)], fill = (img[i][j][2], img[i][j][1], img[i][j][0]), font = font ) blank.save('img_' + pic) draw('1.jpg', "我爱你")
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
520,Python,表白
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- PatriciaPaay-Playmate(ExpandedEditionRemastered2024)[24Bit-96kHz]FLAC
- 蒋志光韦绮姗.2014-传奇巨声【环星】【WAV+CUE】
- 关淑怡.2008-演唱会+无尽经典3CD【环球】【WAV+CUE】
- 伍佰.2002-冬之火九重天演唱会特选录音专辑2CD【滚石】【WAV+CUE】
- 李宗盛1996《李宗盛的凡人歌2CD》滚石[WAV+CUE][1G]
- 刘德华 《天意》1:1直刻黑胶LPCD[WAV+CUE][1.1G]
- 刘德丽2024《赤的疑惑HQCD》头版限量编号MQA[低速原抓WAV+CUE]
- 英雄联盟万圣节有什么皮肤返场 2024万圣节皮肤返场一览
- lol万圣节赠礼活动什么时候开始 2024万圣节活动时间介绍
- 2024全球总决赛blg是全华班吗 全球总决赛blg选手所属国家介绍
- 《LOL》S14半决赛:T1战胜GEN晋级决赛!对决BLG
- 《完蛋美女前传》白白演员抱怨:都没人玩我的线
- 玩家热议OLED屏对画面提升巨大:比PS5 Pro值得买
- PatriciaPaay-TheLadyIsAChamp(ExpandedEdition)(2024)[24Bit-96kHz]FLAC
- 尚士达.2024-莫回头【智慧小狗】【DTS-WAV分轨】