新闻频道 > 新政风向

北京赛车登入

文章链接:https://mp.weixin.qq.com/s/yiFOmljhyalE8ssAgwo6Jw

关于python图片转字符画,相信大家都不陌生,经常出现在 n个超有趣的python项目中。
今天我也来实践这个有趣的项目,更进一步的是把这个功能做成一个在线的网站,直接上传图片生成字符画,在线预览可以让更多的人来体验。
体验网址:https://www.manjiexiang.cn/blog/post_img
举个栗子,就是这是一张图片

经过转换成的字符画是这样的,这个txt的文件

代码部分:
使用PIL处理图片,resize方法转成指定宽高

from PIL import Image
im = Image.open("qq.png")
im = im.resize((width, height), Image.NEAREST)

像素转字符方法,将r,b,g转化为灰度值,然后根据灰度值的大小确定所选字符在ascii_char中的位置。

def get_char(r, g, b, alpha=256):
    ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`". ")
    if alpha == 0:
        return " "
    length = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)

    unit = (256.0 + 1) / length
    return ascii_char[int(gray / unit)]

处理图片,遍历图片中的每一个像素,依次调用get_char方法即可得到每一个像素对应的字符,然后将这些字符组合起来即可得到所需的字符画了,输出到txt文件。

def draw():
    im = Image.open("qq.png")
    im = im.resize((width, height), Image.NEAREST)
    txt = ""
    for i in range(height):
        for j in range(width):
            txt += get_char(*im.getpixel((j, i)))
        txt += "
"
    with open("qq.txt", "w") as f:
        f.write(txt)

至此,生成字符画的脚本完成了。
接下来就是运用到网站项目中,区别是图片是上传的,不是本地的路径,这里采用的是django的项目,图片上传到项目里的路径

media_root = os.path.join(settings.BASE_DIR, "upload/")

原本想将生成的txt文件下载下来的,发现下载的txt文件里面字符画错乱了,索性就重定向进行浏览,效果一样。

设置的宽高可以修改生成字符画的大。?瓷厦娴膚idth、height
网站地址:
https://www.manjiexiang.cn/blog/post_img

欢迎大家使用

脚本github地址:https://github.com/taixiang/py_draw

jue ben github di zhi: https: github. com taixiang py_draw

欢迎关注我的个人博客:https://www.manjiexiang.cn/

更多精彩欢迎关注微信号:春风十里不如认识你
一起学习,一起进步,欢迎上车,有问题随时联系,一起解决。。狘/p>

当前文章:http://www.carinsurancequoteny.com/d168m9/598967-676228-30157.html

发布时间:11:58:20

九龙内幕  本港台现场报码室  099333曾道人救世网  www.567506.com  一肖一尾中特  今晚特马开奖结果  曾道人八卦玄机图  六合乐坊心水论坛  香港码开奖结果580767  www.422648.com  

关键词:安徽貉拘犊集团公司,男子捅死女友父亲,漯河廊惹电子有限公司责任编辑:石马

推荐阅读

Cloudera Manager及CDH最新版本安装全程记录
关于荣耀Magic2,这些已经不再是秘密