首页 文章详情

用 Python 写了一个表白神器,照片隐藏表白话语!

i小码哥 | 374 2021-11-20 06:09 0 0 0
UniSMS (合一短信)

(点击上方快速关注并设置为星标,一起学Python)


原文链接:blog.csdn.net/qq_44809707

前言


最近天气好冷,感觉整个人都是冰冰的!程序员如何用python表白自己的女神呢?我想用最近学的图像处理知识,在照片上加隐藏字(手机正常浏览是一张照片,放大才可以看到里面的文字)

大家也可以用这个代码去表白自己的对象呀。

一、具体过程

1、代码思路

先用cv2中的imread方法读取冰冰的照片,再用PIL的Image方法创建一个相同大小的图像(初始填充白色),最后在图片上每一个块加字。

2、python完整代码

# -*- coding:utf-8 -*-from PIL import Image, ImageDraw, ImageFontimport cv2font_path='./font-family/MiNiJianPangWa-1.ttf'def draw(image_path, draw_text):  img = cv2.imread(image_path)#读取图片文件  img_temp = Image.new("RGB", [img.shape[1],img.shape[0]], "white")#以指定的模式和大小创建一个新图像(白色填充),img.shape[1]为像素大小  drawObj = ImageDraw.Draw(img_temp)#创建一个可以在给定图像上绘图的对象。  n = 8#间隔大小  m = 8#字体大小  font = ImageFont.truetype(font_path,size = m)  for i in range(0, img.shape[0], n):#通过两个for循环,依次定位到每个文字所在的色块    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)  img_temp.save('img_' + image_path)draw('bingbing.jpg'"都是冰冰的")#可以自己更改哦


3、代码补充

font_path需要自己更改,可以去网上下载字体。我试过几个字体,发现一个效果比较好。

m和n的值也可以自己更改,不过我试过很多值,发现两者都为8的效果比较理想。

二、结果

这是我用的冰冰的照片(选的照片尽量像素大一点):


这是结果图(手机预览看不到文字)


放大后可以清楚看到文字内容

补充

最后生成的图片放大后可能会失真,文字模糊。我在网上发现一个网站,可以无损放大图片。上传图片,选择放大倍数,选择最高降噪,两分钟左右就可以生成。

零基础学 Python,来这里


 只需7天时间,跨进Python编程大门,已有3800+加入

【基础】0基础入门python,24小时有人快速解答问题;
【提高】40多个项目实战,老手可以从真实场景中学习python;
【直播】不定期直播项目案例讲解,手把手教你如何分析项目;
【分享】优质python学习资料分享,让你在最短时间获得有价值的学习资源;圈友优质资料或学习分享,会不时给予赞赏支持,希望每个优质圈友既能赚回加入费用,也能快速成长,并享受分享与帮助他人的乐趣。
【人脉】收获一群志同道合的朋友,并且都是python从业者
【价格】本着布道思想,只需 69元 加入一个能保证学习效果的良心圈子。

【赠予】后续圈主将开发python,0基础入门在线课程,免费送给圈友们,供巩固和系统化复习

(三重福利)最近入圈送大礼包:

1、2.7G、308份最新数据分析报告
2、40G 人工智能算法  视频课
3、Python爬虫课,共14课

更多精彩


在公众号后台对话框输入以下关键词

查看更多优质内容!


PM2.5 | 世界杯 | 惊喜 | 附书代码


转载 / 投稿请联系:data_circle_yoni

优秀的读者都知道,“点赞”传统美德不能丢 
good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter