zoukankan      html  css  js  c++  java
  • PIL字符图

    个人兴趣学习

    在网上无事瞎逛的时候发现的一个比较有趣的图片处理,看了之后蠢蠢欲动就来学习了一下并试着写了几行代码实现

    直接上代码    新人代码  写的很不完善

    from PIL import Image
    
    def turn(img):
        # 转为字符串后占时存储
        txt = ""
        # 图片的高宽像素进行每个像素点的遍历   先高后宽进行横向遍历  确定后面得到的图片是横铺的
        for i in range(img.size[1]):
            for j in range(img.size[0]):
                # 得到遍历像素点的RGB值
                grey = img.getpixel((j,i))
                # 将每一个像素点RGB值在字符列表中找到对应的字符
                txt += char[int(grey / num) - 1]
            # 每行填写完之后进行换行
            txt += '\n'
        # 返回写好的txt字符文本
        return txt
    
    char = list(r"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
    
    # 打开需要转换的图片
    pic = Image.open(r"C:\Users\80it\Pictures\Nardack\キンギョ.png")
    
    # 将需要转换的图片先转换为绘图  方便后面进行直接按坐标确定灰图RGB值
    pic = pic.convert("L")
    
    # 确保索引不会超过字符串长度
    num = 255 / len(char)
    
    # 将图片缩放
    width, height = pic.size
    # 找到适合电脑尺寸的比例
    pic = pic.resize((int(width * 1.0),int(height * 0.6)))
    
    if __name__ == "__main__":
        # 将写好的字符文本写入电脑并保存
        with open(r"C:\Users\80it\Desktop\charpic.txt","w") as f:
            f.write(turn(pic))

    运行结果如下:

    进行字符的绘画   还是很有趣的

  • 相关阅读:
    jQuery插件主要有两种扩展方式
    系统负载测试工具-LoadRunner
    安全扫描工具-AppScan
    newinstance()和new有什么区别?(转)
    类的加载、连接和初始化 (转)
    tar 基础
    了解【重放攻击】
    DDLDMLDCLDQL
    web.xml的配置问题
    组合与聚合
  • 原文地址:https://www.cnblogs.com/MaGnet/p/9953740.html
Copyright © 2011-2022 走看看