剛學會上網(wǎng)的時候,看到上面的圖覺的老神奇了。普通的英文字母居然可以畫畫熬荆。自己畫是肯定看不出的。然而幼稚的我們被騙了
原圖是這樣的
通過下面的代碼生成了字符畫绸狐,什么原理呢卤恳?
我們知道顯示器是由一個個像素點組成的,每個像素點可以顯示不同的顏色六孵,這樣就可以顯示彩色的照片纬黎。最早的黑白顯示器雖然只能顯示白和黑,但因為亮度的不同就可以顯示信息較豐富的黑白圖像劫窒,這個就是灰度值。
那我們反轉(zhuǎn)過來拆座,把彩色圖片轉(zhuǎn)成灰度圖主巍,再用ascii映射到灰度值上,就可以顯示出肉眼可以接受的信息了挪凑。用Python完全可以做到
在image2ascii方法里孕索,我們用thumbnail函數(shù)改變源圖片的尺寸為寬與高為100,然后用convert轉(zhuǎn)為灰度圖片躏碳。
image.thumbnail((100, 100), Image.ANTIALIAS)
image = image.convert('L')
在pixel2ascii方法里
ASCII = [chr(c) for c in range(65, 91)]
通過chr 生成一個A到Z的數(shù)組搞旭,因為不到顯示需要的255個灰度值,所以需要做個除法計算。根據(jù)具體的圖片肄渗,我們可以通過調(diào)整range_width值改善圖片的顯示質(zhì)量
最后按每行100個字符逐行打印出轉(zhuǎn)換完的字符就好了镇眷。