Spark๋ฅผ ์ค์นํด ๋ณด์ ๋ถ์ด๋ผ๋ฉด ์๋์ ์ด๋ฏธ์ง๊ฐ ์น์ํ ๊ฒ์ ๋๋ค.
Spark๋ผ๋ ๋จ์ด๋ฅผ ๋ฌธ์๋ฅผ ์ด์ฉํด์ ํ ์คํธ๋ก ๊ทธ๋ฆฐ ๊ฒ์ ๋๋ค.
๋น์ทํ ๋ฅ์ ๋ฌธ์๋ก ๋ ๊ทธ๋ฆผ์ 2021๋ ๋์ฏค ๋ค์ด๋ฒ ์นํฐ ๋๊ธ์์๋ ๋ง์ด ๋ณผ ์ ์์์ต๋๋ค.
์ด๋ ๊ฒ ๊ธ์๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ๊ฒ์ ASCII Art๋ผ๊ณ ํฉ๋๋ค. ๋จ์ํ๊ฒ ๋ณต๋ถ ํด์ ๋ณด๋ด๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ ์ด๋ฏธ์ง์ ๋นํ๋ฉด ๊ณต์ ๊ฐ ์์ํ ํธ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ :) ^_^ ์ด๋ฌํ ์ด๋ชจํฐ์ฝ๋ค๋ ์์คํค ์ํธ์ ๋ฒ์ฃผ์ ์ํฉ๋๋ค. (ํ ์ค์ง๋ฆฌ ์์คํค ์ํธ)
ํ์ฌ ๋ค๋๋ ์ง์ฅ์์๋ ์์คํค ์ํธ๋ฅผ ๊ฐ๋ ์ฌ์ฉํฉ๋๋ค. ์ฌ๋ด ๋ฉ์ ์ ์ ์ด๋ชจํฐ์ฝ ๊ฐ์ง ์๊ฐ ๋งค์ฐ ์ ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง๋ฅผ ์์คํค ์ํธ๋ก ๋ณํํด์ ๋ฉ๋ชจ์ฅ์ ์ ์ฅํด๋๊ธฐ๋ ํฉ๋๋ค ใ ใ .
์ด๋ฒ ํฌ์คํ ์์๋ Python์ผ๋ก ์์คํค ์ํธ๋ฅผ ์์ฑํ๋ ํจ์๋ฅผ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์๊ฐ ์ธ๋ก ์๋ฆฌ๋ ๋จ์ํฉ๋๋ค:
1. ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ์จ๋ค
2. ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๋ฅผ ์๋ง๊ฒ ์กฐ์ ํ๋ค
3. ์ด๋ฏธ์ง๋ฅผ ํ๋ฐฑ(Greyscale)์ผ๋ก ๋ณํํ๋ค
4. ํ๋ฐฑ ์ด๋ฏธ์ง์ Byte์ ๋ณด๋ฅผ ASCII ๋ฌธ์๋ก ์นํํ๋ค
์์ ๊ท์ฌ์ด ์๋ฐ๊ฒฌ ์ด๋ฏธ์ง๋ฅผ Python์ ์ฌ์ฉํด์ ASCII Art๋ก ๋ณํํด๋ณด๊ฒ ์ต๋๋ค.
from PIL import Image
# ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ๋ ์ฌ์ฉํ๊ณ ์ ํ๋ ASCII ๋ฌธ์
### ๊ฐ์ฅ ์ด๋์ด ์ ํํ ๋ฌธ์ --------> ๊ฐ์ฅ ๋ฐ์ ์ ํํ ๋ฌธ์
ascii_str = ["@", "#", "๏ผ", "%", "*", "+", ";", ":", ",", "."]
##### DEFINE FUNCTION #####
# ์ด๋ฏธ์ง ์ฌ์ด์ฆ ์กฐ์
def resize(image, resized_w=100):
w, h = image.size
resized_h = int(resized_w*h/w)
return image.resize((resized_w, resized_h))
# ํ๋ฐฑ์ผ๋ก ๋ณํ
def greyscalify(image):
return image.convert('L')
# ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ASCII๋ฌธ์๋ก ์นํํ๊ธฐ
def convert(image, resized_w):
pix = image.getdata()
ascii_ = ''
for dot in pix:
ascii_ += ascii_str[dot//26]
# ์ด๋ฏธ์ง ์ฌ์ด์ฆ ๋๋ก ์๋ฅด๊ธฐ
ascii_str_len = len(ascii_)
img_w = image.width
ascii_art = ""
for i in range(0, ascii_str_len, img_w):
ascii_art += ascii_[i:i+img_w] + '\n'
return ascii_art
##### CODE START #####
#1. ์ด๋ฏธ์ง ํ์ผ ์ด๊ธฐ
## ์ด๋ฏธ์ง ๊ฒฝ๋ก
path = './shibainu.jpeg'
## ์ด๋ฏธ์ง ์ด๊ธฐ
image1 = Image.open(path)
#2. ์ด๋ฏธ์ง ์ฌ์ด์ฆ ์กฐ์
resized_width = 50
image = resize(image1, resized_width)
#3. ์ด๋ฏธ์ง ํ๋ฐฑํ
greyscale = greyscalify(image)
#4. ์ด๋ฏธ์ง ๋ด ํฝ์
๊ฐ ASCII๋ก ๋ณํ
ascii_art = convert(greyscale, resized_width)
# ํ
์คํธ ํ์ผ๋ก ์ ์ฅ
with open('ascii_art.txt','w') as f:
f.write(ascii_art)
> ๊ฒฐ๊ณผ๋ฌผ:
๐กTip
์์คํค ์ํธ๋ก ์ด๋ฏธ์ง ๋ณํ์ ์ํ๊ณ ์ถ๋ค๋ฉด ์์ ๊ฒฝ๊ณ๊ฐ ๋๋ ทํ ์ฌ์ง์ ๊ณ ๋ฅด์๋ ๊ฒ์ด ์ข์ต๋๋ค.
'๐ป ITยท๊ธฐ์ ยทํต๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NLP] lexrankr๋ก 3์ค ์์ฝํด๋ณด๊ธฐ (0) | 2023.02.15 |
---|---|
[์นํฌ๋กค๋ง 3ํ - ไธ] requests-html์ ํ์ฉํ ๋ค์ด๋ฒ ๋ด์ค ๊ฐ์ ธ์ค๊ธฐ (0) | 2023.02.15 |
[Snippet] ์์ฃผ ์ฌ์ฉํ๋ List, Dictionary ๊ธฐ๋ฅ (0) | 2023.02.09 |
[API] ์ธ๊ณ ๊ฐ๊ตญ์ ๊ธฐ๋ณธ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ (restcountries) (2) | 2023.02.06 |
[API] ๋ฆฌ๊ทธ์ค๋ธ๋ ์ ๋: ์ฑํผ์ธ ๋ง๊ณ API๋ฅผ ๊ฐ์ง๊ณ ๋์๋ณด์ (2) | 2023.02.05 |
๋๊ธ