程序员的浪漫——用她的名字画python版本
Hello,你好,我是灰色的。前面介绍了一篇用她的名字画她的美图的文章。其中主要使用的Java实现了。今天,我要用Python (Python)再试一次。
同样的最终代码量也不会超过30行。
以前的博客:*程序员的浪漫-以她的名义绘制python版本-灰色博客[1]
1.环境相关
这里我们选择python作为我们的主要绘画武器,这里不介绍与python的环境设置相关的内容。感兴趣的小伙伴们正在自己探索。
Python计,操纵照片的武器PIL,大家都很清楚,以后会用它来实现我们的目标。
安装依赖性
Pip install Pillow2。基本知识点
在重新正式开始之前,我将向不熟悉PIL操作的小伙伴简单介绍基本用法,当然重点强调我们将采用的一些方法。
2.1加载图片
From PIL import Image
Img=Image.open(“图片地址”)是的,很简单。可以直接使用Image.open()读取图片
2.2收集图像基本信息
导入图形后,通常需要注意的一些参数(例如宽度高度、通道)
宽度、高度=img.size
# RGBA表示包含透明度,例如png
# RGB不包含透明度,如jpg
创建用于编辑Mode=img.mode2.3的场地
要在此图中绘制信息或创建空白场地,必须先导入ImageDraw对象。
From PIL import ImageDraw
导入对应于#图的画板
Draw=ImageDraw。从Draw(img)中获得Draw对象后,可以根据提供的各种方法绘制各种几何图形、文字、图片等。如果我们想得到空白的大地,可以怎么办?
#生成要透明的图片。第二个元组参数表示图的宽度高度,第三个参数表示背景完全透明
New _ img=image.new ('rgba '(width,height),(255、255、255、0)) imagedraw提供了大量绘图
New _ img=image.new ('rgba '(480,640),(255,255,255,0))
#创建绘制对象
Draw=ImageDraw。Draw(new_img)
从#开始(10,10)-(100,100)绘制黄线
Draw.line ((10,10,100,100),' red ')
#矩形绘制(100,110)-(200,200)、黑色填充、黄色填充
Draw.rectangle ((100,110,200,200)、' black '' red ')
#绘制椭圆
Draw.ellipse ((300,300,500,400)、' yellow green '' red ')
#圆
Draw.ellipse ((250,250,350,350)、' seagreen '' red ')
#绘制文本,选择宋体,字体大小28,unicode编码
font=image font . truetype('28,encoding='unic ')
Draw.text((300,200),u“灰色博客”,“red”,font)侧重于文本绘制。draw.text((x,y))
导入2.4像素
要获取指定坐标的RGB值,可以执行以下操作
Pixel=img.getpixel((x,y))看这里的小伙伴,结合之前的博客,用python版本的她的名字画画应该很简单吧。
2.5预览和保存图片
#显示图片
New_img.show()
#保存图像
new _ img . save(')3 .绘制python版本文本
接下来,进入正式实施。
From PIL import Image
From PIL import ImageDraw
From PIL import ImageFont
Def render (path : str、name : str、save : str) :
Img=Image.open(path)
宽度、高度=img.size
#创建画板,放大24倍
New _ img=image.new ('rgba '(width * 24,height * 24),(255,255,255,0))
Draw=ImageDraw。Draw(new_img)
#加载自定义字体,字体文件
font=image font . truetype(u ' d ://mobile file/时尚的书写。ttf '20,encoding='unic') #
Render_index=0
For x inrange(宽度):
For y inrange(高度):
Pixel=img.getpixel((x,y))
Draw.text ((x * 242,y * 242),name [render _ index],pixel,font) #在重新指定的地方,用文本替换以前的纯色
render _ index=(render _ index 1)% len(name)
New_img.save(save)仍然以小黄人为例,看看会有什么效果
从上面的照片来看,与之前Java版本的输出没有区别,感兴趣的小伙伴们在动手。我是灰烬。不错的小伙伴收藏,称赞,评论。
灰色联系方式
信完书总比没有书好。以上内容纯属一家之言。由于个人能力有限,不可避免地会有遗漏和失误。如果发现bug或有更好的建议,欢迎批评。不吝惜感谢
个人网站:微博地址3360小灰色博客[2] QQ:灰色/3302797840微信公众号:灰色博客
Qr代码
References
[1]程序员的浪漫——以她的名义绘制python版本——灰色blog :/hex blog/2022/05/26/220526——程序员的浪漫——以她的名义绘制python版本/
[2]小灰blog : https://Weibo . com/p/1005052169825577/home