1. 程式人生 > >Python將圖片模糊字元化

Python將圖片模糊字元化

# codeLib = '''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. '''
# 字元列表
codeLib = '''@#$%&?*aeoc=<{[(/l|!-_:;,."'^~` '''

from PIL import Image 
# print(len(codeLib))
# 將彩色圖片轉化為黑白的
# im = Image.open('reba.jpg')
# result = im.convert("L")
# result.save("result_2.jpg","jpeg")
# 計算字元列表的長度
count = len(codeLib)
 
# 定義轉化的函式,方便在主函式一次或多次呼叫
def trans_photo(image_file) :
    
    # 將彩色圖片轉化為黑白的圖片
    image_file = image_file.convert("L")
    codePic = ''
    # 迴圈圖片的寬高,並得到每一畫素的灰度值
    for h in range(0, image_file.size[1]) :
        for w in range(0, image_file.size[0]) :
            gray = image_file.getpixel((w, h))
            # 將對應的灰度值對映到字元
            codePic = codePic + codeLib[int(((count)*gray)/256)]
        # 實現每行結尾處自動換行
        codePic = codePic + '\r\n'
    return codePic
 
if __name__ == "__main__" :
 
    # 以二進位制讀取圖片檔案
    fp = open('E:\\picture\\python\\a.jpg','rb')
    image_file = Image.open(fp)
    # 將圖片進行適當的放大或者縮小
    image_file = image_file.resize((int(image_file.size[0]/8), int(image_file.size[1]/16)))
    
    # 以寫的形式開啟w.txt檔案
    tmp = open("E:\\picture\\w.txt","w")
    # 將最終得到的codePic寫到檔案中
    tmp.write(trans_photo(image_file))
    tmp.close()

效果如圖
在這裡插入圖片描述