首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用 Python 写了一个表白神器,照片隐藏表白话语!

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

作者头像
Python编程与实战
发布2021-11-04 11:13:44
9040
发布2021-11-04 11:13:44
举报

最近天气好冷,感觉整个人都是冰冰的!程序员如何用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 需要自己更改,可以去网上下载字体。我试过几个字体,发现一个效果比较好。

百度网盘链接:https://pan.baidu.com/s/1e7zwvHgmr-90QH5j0vPGBg 提取码:8owp m和n的值也可以自己更改,不过我试过很多值,发现两者都为8的效果比较理想。

二、结果

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

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

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

补充

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

最后把这个网站分享给大家:https://bigjpg.com/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python编程与实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、具体过程
    • 1、代码思路
      • 2、python完整代码
        • 3、代码补充
        • 二、结果
        • 补充
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档