• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

程序员的浪漫用她的名字作画Python版

python 搞java代码 3年前 (2022-06-26) 24次浏览 已收录 0个评论
文章目录[隐藏]

程序员的浪漫-用她的名字作画Python版

hello,大家好,我是一灰灰,之前介绍了一篇应用她的名字来画出她的美图的文章,其中次要应用的Java来实现的,明天呢,咱们再来用Python来实现一下

同样最终的代码量也不会超过三十行

<!– more –>

上篇博文超链:* 程序员的浪漫-用她的名字作画Python版 – 一灰灰Blog

1. 环境相干

这里咱们抉择python来作为咱们的次要绘图武器,至于python的环境装置相干的这里就不介绍了,有趣味的小伙伴自行摸索

再python界,操作图片的利器PIL,置信大伙也都分明,接下来将应用它来实现咱们的指标

装置依赖

<code class="bas">pip install Pillow

2. 根本知识点

再正式开始之前,给不太熟悉PIL操作的小伙伴,简略介绍一下它的根本用法,当然也会重点突出一下咱们将采纳的几个办法

2.1 加载图片

from PIL import Image

img = Image.open("图片地址")

是的,就这么简略,间接应用 Image.open() 就能够读取图片了

2.2 图片根本信息获取

获取图之后,通常须要关注的几个参数,如宽高,通道

width, height = img.size
# RGBA 示意蕴含透明度,如png
# RGB 不蕴含透明度,如jpg
mode = img.mode

2.3 创立画板,用于编辑

如果咱们想在这个图片上进行绘制信息,或者说心愿创立一个空的画板,那么咱们就先须要获取到一个ImageDraw对象

from PIL import ImageDraw

# 获取图片对应的画板
draw = ImageDraw.Draw(img)

下面获取到draw对象之后,就能够依据它提供的各种办法,来绘制各种几何图形、文字、图片等;如果咱们心愿获取一个空的画板,能够怎么操作呢?

# 创立一个待透明度的图,第二个元组参数为图的宽高,第三个示意背景全透明
new_img = Image.new("RGBA", (width, height), (255, 255, 255, 0))

ImageDraw提供了很多绘图的办法,上面给出一些罕用的case,就不重点叙述了

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), 'yellowgreen', 'red')
# 园
draw.ellipse((250, 250, 350, 350), 'seagreen', 'red')

# 绘制文本,抉择宋体,字体大小为28,uniquecode编码
font = ImageFont.truetype("simsun.ttc", 28, encoding="unic")
draw.text((300, 200), u'一灰灰Blog', 'red', font)

重点关注绘制文本这里,draw.text((x,y), "文字", "文字色彩", 字体), 这就是接下来要应用的办法

2.4 获取像素

如果咱们心愿获取指定坐标的RGB值,如下操作即可

pixel = img.getpixel((x, y))

看到这里的小伙伴,联合前一篇博文,要想实现python版的用她的名字绘图,置信就很简略了吧

2.5 预览和保留图片

# 展现图片
new_img.show()

# 保留图片
new_img.save("save.png")

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)
    width, height = img.size
    # 创立画板,放大24倍
    new_img = Image.new("RGBA", (width * 24, height * 24), (255, 255, 255, 0))
    draw = ImageDraw.Draw(new_img)

    # 加载自定义字体,字体文件来自 https://www.diyiziti.com/Builder/446
    font = ImageFont.truetype(u"D://MobileFile/洒脱手写体.ttf", 20, encoding="unic")  # 设置字体
    render_index = 0
    for x in range(width):
        for y in range(height):
            pixel = img.getpixel((x, y))
            draw.text((x * 24 + 2, y * 24 + 2), name[render_index], pixel, font)  # 再指定的中央应用文字代替之前的纯色
            render_index = (render_index + 1) % len(name)
    new_img.save(save)

仍然以小黄人为例,来看下生成的成果如何

从下面的图片来看,和后面java版输入差不离,有趣味的小伙伴入手搞起来吧;我是一灰灰,感觉不错的小伙伴给个珍藏、点赞、评论反对一下呗

一灰灰的联系方式

尽信书则不如无书,以上内容,纯属一家之言,因集体能力无限,不免有疏漏和谬误之处,如发现bug或者有更好的倡议,欢送批评指正,不吝感谢

  • 集体站点:https://blog.hhui.top
  • 微博地址: 小灰灰Blog
  • QQ: 一灰灰/3302797840
  • 微信公众号:一灰灰blog

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:程序员的浪漫用她的名字作画Python版

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址