Python特效之文字成像方法详解
作者:autofelix 发布时间:2021-08-09 09:34:06
标签:Python,文字,图像
一、特效预览
处理前
处理后
细节放大后
二、程序原理
1.输入你想隐藏的文字
2.然后写到另一张跟照片同等大小的空白纸张上
3.将相同位置的文字的颜色用照片上相同位置的颜色填充即可
4.然后生成新的图片你听懂了吗
三、程序源码
#!/usr/bin/env python
# encoding: utf-8
from PIL import Image, ImageDraw, ImageFont
class wordPicture:
'''
This is a main Class, the file contains all documents.
One document contains paragraphs that have several sentences
It loads the original file and converts the original file to new content
Then the new content will be saved by this class
'''
def __init__(self):
self.font_size = 7
self.picture = 'assets/picture.jpeg'
def hello(self):
'''
This is a welcome speech
:return: self
'''
print('*' * 50)
print(' ' * 20 + '文字成像')
print(' ' * 5 + 'Author: autofelix Date: 2022-01-06 13:14')
print('*' * 50)
return self
def run(self):
'''
The program entry
'''
word = input('请输入你想说的:') or '我钟意你'
resource = Image.open(self.picture)
img_array = resource.load()
image_new = Image.new('RGB', resource.size, (0, 0, 0))
draw = ImageDraw.Draw(image_new)
font = ImageFont.truetype('/System/Library/Fonts/PingFang.ttc', self.font_size)
yield_word = self.character_generator(word)
for y in range(0, resource.size[1], self.font_size):
for x in range(0, resource.size[0], self.font_size):
draw.text((x, y), next(yield_word), font=font, fill=img_array[x, y], direction=None)
image_new.convert('RGB').save('result.jpeg')
def character_generator(self, text):
while True:
for i in range(len(text)):
yield text[i]
if __name__ == '__main__':
wordPicture().hello().run()
来源:https://blog.csdn.net/weixin_41635750/article/details/122462554


猜你喜欢
- 刚开始进入页面,当滚动向下超过原屏的时候。右侧会出现一个“返回顶部”的按钮。这个按钮会跟这网页一起向上向下,当滚动到顶部的时候。“返回顶部”
- vant文档:Vant 2 - Mobile UI Components built on Vue实现效果: 代码实现:1.nav
- The Only Thing We Have To Fear Is Premature Standardization原文地址:http:/
- 这段时间一直比较忙,一忙起来真感觉自己就只是一台挣钱的机器了(说的好像能挣到多少钱似的,呵呵);这会儿难得有点儿空闲时间,想把前段时间开发微
- 本文实例为大家分享了vue实现选择商品规格功能的具体代码,供大家参考,具体内容如下要实现上图的效果,代码如下:<template>
- 我们知道分析MySQL语句查询性能的方法除了使用EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定
- linux系统中 linux默认的是utf8编码,而windows是gbk编码,所以会出现上面的乱码问题。 解决mysql导入导出数据乱码问
- 如果查询结果很多,服务器解释你的ASP script将花费大量的时间,因为有许多的Response.Write语句要处理. 如果你将输出的全
- 一、构建示例数据import pandas as pdimport numpy as npdata = {"ID":[2
- 这篇文章主要介绍了Django app配置多个数据库代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- Python2.7已于2020年1月1日开始停用,之前RF做自动化都是基于Python2的版本。没办法,跟随时代的脚步,我们也不得不升级以应
- 抽象工厂模式Abstract Factory Pattern是什么抽象工厂模式是一种创建型模式,它提供了一种创建一系列相关或相互依赖对象的最
- Vue 中使用v-for语句抛出错误的解决方案今天在维护以前的项目的时候遇见了下面的报错情况,开始我以为是因为jQuery和Vue冲突了,所
- 来自巴西的设计师Roger Oddone的作品,通过此作品你可以了解到logo的设计的一些思路。
- 本文实例讲述了Python使用itchat模块实现简单的微信控制电脑功能。分享给大家供大家参考,具体如下:#!/usr/bin/python
- 本文实例讲述了Python列表元素常见操作。分享给大家供大家参考,具体如下:列表类似于java中的数组,用方括号表示,逗号分隔其中的元素#赋
- 本文实例为大家分享了mysql备份脚本,供大家参考,具体内容如下#!/bin/bash#全备方式,一般在从机上执行,适用于小中型mysql数
- 图表库下面的类库可以让你很简单就能创建复杂的图表和图片。当然,它们需要GD库的支持。pChart - 一个可以创建统计图的库。Libchar
- 本文实例讲述了mysql中各种常见join连表查询。分享给大家供大家参考,具体如下:通常我们需要连接多个表查询数据,以获取想要的结果。一、连
- 使用os.environ来读取和修改环境变量:import osprint (os.environ["TEMP"])my