用 Python 写了一个表白神器,照片隐藏表白话语!
编辑:乐乐 | 来自:blog.csdn.net/qq_44809707
上一篇:卧槽!微信可以改彩色昵称了!!!
大家好,我是Python人工智能技术
前言
最近天气好冷,感觉整个人都是冰冰的!程序员如何用python表白自己的女神呢?我想用最近学的图像处理知识,在照片上加隐藏字(手机正常浏览是一张照片,放大才可以看到里面的文字)
大家也可以用这个代码去表白自己的对象呀。
一、具体过程
1、代码思路
先用cv2中的imread方法读取冰冰的照片,再用PIL的Image方法创建一个相同大小的图像(初始填充白色),最后在图片上每一个块加字。
2、python完整代码
# -*- coding:utf-8 -*-
from PIL import Image, ImageDraw, ImageFont
import cv2
font_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人工智能技术
你还有什么想要补充的吗?
免责声明:本文内容来源于网络,文章版权归原作者所有,意在传播相关技术知识&行业趋势,供大家学习交流,若涉及作品版权问题,请联系删除或授权事宜。
技术君个人微信
添加技术君个人微信即送一份惊喜大礼包
→ 技术资料共享
→ 技术交流社群
--END--
往日热文:
华为销售郑某受贿 459 万元,被判三年;王某、张某虹行贿,分别被判一年八个月、一年六个月
Python程序员深度学习的“四大名著”:
这四本书着实很不错!我们都知道现在机器学习、深度学习的资料太多了,面对海量资源,往往陷入到“无从下手”的困惑出境。而且并非所有的书籍都是优质资源,浪费大量的时间是得不偿失的。给大家推荐这几本好书并做简单介绍。
获得方式: