# 如何利用Python製作ASCII圖
## 甚麼是ASCII art
* 文字圖、字元畫、文字畫
* 1982年出現
## 例子
* 顏文字
<font size="6"> : ) </font>
<font size="6"> == </font>
* 複雜一點的
```
______
/\ \
/ \ \
/ \_____\
_\ / ____/_
/\ \ / /\ \
/ \ \/_/ \ \
/ \__/ \_____\
_\ / \ / ____/_
/\ \ / \ / /\ \
/ \ \/_____/\/_/ \ \
/ \_____\ / \_____\
_\ / / \ / ____/_
/\ \ / / \ / /\ \
/ \ \/_____/ \/_/ \ \
/ \_____\ / \_____\
_\ / / \ / ____/_
/\ \ / / \ / /\ \
/ \ \/_____/ \/_/ \ \
/ \_____\ / \_____\
_\ / /_ ______ ______ _\____/ ____/_
/\ \ / / \/\ \/\ \/\ \/\ \
/ \ \/_____/ \ \ \ \ \ \ \ \ \
/ \_____\ \_____\ \_____\ \_____\ \_____\ \_____\
\ / / / / / / / / / / / /
\ / / / / / / / / / / / /
\/_____/\/_____/\/_____/\/_____/\/_____/\/_____/
```
* 動畫
{%youtube NRG5laww8kk%}
## 開始
```
pip install Pillow
```
1. 加入圖像
```
import PIL.Image
img_flag = True
path = input("輸入圖片路徑 : \n")
try:
img = PIL.Image.open(path)
img_flag = True
except:
print(path, "找不到圖片")
```
2. 調整圖像大小
```
width, height = img.size
aspect_ratio = height/width
new_width = 100
new_height = aspect_ratio * new_width * 0.5625
img = img.resize((new_width, int(new_height)))
```
3. 把圖像轉為灰階
```
img = img.convert('L')
```
4. 創建ASCII字符列表
- ASCII是由最暗到最亮的排列,也可以自訂下面的字符。
```
chars = ["%", "*", "^", "^", "-", "+", "<", "!", ":", ".", " "]
```
5. 轉換成ASCII ART
```
pixels = img.getdata()
new_pixels = [chars[pixel//25] for pixel in pixels]
new_pixels = ''.join(new_pixels)
new_pixels_count = len(new_pixels)
ascii_image = [new_pixels[index:index + new_width]
for index in range(0, new_pixels_count, new_width)]
ascii_image = "\n".join(ascii_image)
with open("ascii_image.txt", "w") as f:
f.write(ascii_image)
```
### 結果
```
::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::@===========:::^==========%:::::::::::
:::::::::::==============================%::::::::
::::::::::================================::::::::
:::::::::%======%=======%=====%==============:::::
:::::::::======================================:::
::::::%========%.............%=======%==========::
:::::==========%......%%%%%%...%%====%..........%:
::::%=============...%%%%%%%%...........%%%%%%...:
::::==================%%%%%%%==........%%%%%.%.=::
:::@=======================%==========^========:::
:::=======================%==================&%:::
::+================&============%====%========::::
::+========================%=============%%:::::::
:::=======================%============%::::::::::
:::%=================================%::::::::::::
::::&%=============================@&:::::::::::::
::&&&&%======%============@%=====&&&&&&&::::::::::
:&&&&&&&&&&%=================%&&&&&&&&&&&:::::::::
:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&::::::::
:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&<:::::::
:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&:::::::
```
###### tags: `分享會`