Programmer の 表白

自古真情留不住,唯有套路得人心

图片隐藏文字(Python)

将自己所要表达的文字隐藏于图片之中,放大图后可以看到
实现代码

from PIL import Image, ImageDraw, ImageFont


font_size = 5
# text = "我喜欢你!"
text_path = 'C:/Users/Delong/Desktop/text.txt'
f = open(text_path, 'r', encoding='utf-8') 
text = f.read()
img_path = "C:/Users/Delong/Desktop/a.jpg"

# 首先,使用 pillow.Image读取图像,并使用load函数获取到每一个像素值。
img_raw = Image.open(img_path)
img_array = img_raw.load()

# 然后新建一张画布,并选好你要使用的字体和字体大小。
img_new = Image.new("RGB", img_raw.size, (0, 0, 0))
draw = ImageDraw.Draw(img_new)
font = ImageFont.truetype('C:/Users/Delong/Desktop/msyh.ttc', font_size)

# 由于需要不断循环你所需要表达的文字(例如:“我喜欢你!”,这五个字符)。所以这里可以while循环 yield 来实现一个生成器。
def character_generator(text):
    while True:
        for i in range(len(text)):
            yield text[i]

ch_gen = character_generator(text)

# 最后,要给这些字加上相应的颜色,写入新创建的画布中。
for y in range(0, img_raw.size[1], font_size):
    for x in range(0, img_raw.size[0], font_size):
        draw.text((x, y), next(ch_gen), font=font, fill=img_array[x, y], direction=None)

# 将成品保存
img_new.convert('RGB').save("C:/Users/Delong/Desktop/save.jpeg")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值