zoukankan      html  css  js  c++  java
  • python小项目(-)图片转字符画

    # -*- coding: utf-8 -*-
    from PIL import Image
    
    codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/|()1{}[]?-_+~<>i!lI;:,"^`'. '''#生成字符画所需的字符集
    count = len(codeLib)
    
    def transform1(image_file):
        image_file = image_file.convert("L")#转换为黑白图片,参数"L"表示黑白模式
        codePic = ''
        for h in range(0,image_file.size[1]):  #size属性表示图片的分辨率,'0'为横向大小,'1'为纵向
            for w in range(0,image_file.size[0]):
                gray = image_file.getpixel((w,h)) #返回指定位置的像素,如果所打开的图像是多层次的图片,那这个方法就返回一个元组
                codePic = codePic + codeLib[int(((count-1)*gray)/256)]#建立灰度与字符集的映射
            codePic = codePic+'
    '
        return codePic
    
    def transform2(image_file):
        codePic = ''
        for h in range(0,image_file.size[1]):
            for w in range(0,image_file.size[0]):
                g,r,b = image_file.getpixel((w,h))
                gray = int(r* 0.299+g* 0.587+b* 0.114)
                codePic = codePic + codeLib[int(((count-1)*gray)/256)]
            codePic = codePic+'
    '
        return codePic
    
    #图片文件的位置
    fp = open('C:\Users\ZSC\Pictures\Saved Pictures\ascii_dora.png','rb')
    image_file = Image.open(fp)
    image_file = image_file.resize((int(image_file.size[0]*0.75), int(image_file.size[1]*0.5)))#调整图片大小
    print('Info:',image_file.size[0],' ',image_file.size[1],' ',count)
    #输出到txt文件中
    tmp = open('E:\tmp.txt','w')
    tmp.write(transform1(image_file))
    tmp.close()

      

  • 相关阅读:
    怎样简单编写一个html网页
    C# 委托实现冒泡排序
    C# 运算符
    EF 多表联查方法
    Log4net 配置文件
    vs调试 iis发布之后的项目
    继承 ,构造方法使用
    C#扩展方法
    partial 部分类
    WeakReference 弱引用
  • 原文地址:https://www.cnblogs.com/imzscilovecode/p/8575911.html
Copyright © 2011-2022 走看看