效果:
原图:
效果图
c++
@+ + + + + + +@@@+
++ ++ + +@@@@+
++ ++ ++ +++ ++@@@+
++ + + ++ +++++ + ++@@+
++++ ++ + + + ++
+++ + + + + ++ +@
+++++++ + +++ +@
++ ++++ ++++ + +@+
++ + ++ +++ + + + +@+
@ + ++ ++++ + + ++ +@@+
++ + ++ ++ + + + ++@@++@@++
+++ ++ +++ ++++++++ + +++++ +@@@++
++++ + +++++ ++ +++@++ ++++++++
++ + ++++ ++@ +++++++++++ ++++++ +++++ +
++ ++ ++++@+ ++++@@@@@@@@+++@@++++++ ++ + ++ +
++ +@+++ ++ ++@@@@@@@+++ ++ ++@+ ++ +++
+@++++++ @+ +++ +@@@++++ ++@ ++ ++ +
+@@+++++++++ @+++ +@@++ +@@+ + ++++ +
+@+ ++ @@ +@@++ +@+ ++ ++ ++ + +
@@ + ++ @@ @++ ++@@+ + ++ +
@@+@ + ++- +@+ ++@@+ + ++ @ +
@@++ +- @@ ++@@++++++++ ++++++@@@++ + + @ +@++ +
+@@++ @=@ +@@ +++@@@@@@@+@++++ ++ + ++ +@+ ++
+@@@@+ @@+ ++-+ ++++ ++ ++
++ + @@ ++++++ ++
+ ++- ++++++ ++
++ ++-+ + + +++++++@@++ +
+ @@ ++++ +@+ +
@+ ++ +
+ +@+++++ + ++++
++@@@+++++ + +++@@+ + +
+++@@+++++++ + +++@@+ ++
++ +++++++ ++@+ + + + + +
++ @@ ++ ++ + ++
+++ +-++ @ +++++@@+@++++ ++++ + +
++ @+ ++ ++++++++++++++++++++++++++++++++ +
++++++++ ++++++++++++++++ + +++++++++++++++
+ + + ++++++++++++++++ ++++++++++ +++++++++++++++
+ +++++ +++++++++++++++++ ++ + ++++@@@++ +
++++@@@++++@@++++++++ ++++ ++ ++@@@@@+
+++++@@@@++@@@@++@++++ ++++ + ++@@@+
++@@+@@@@++@@@@++@@+++ +++ + + +@@+
+@@@@@@@@++@@@@+++@@+ +++ ++ @@+
+@@+++@++ +@@@@@++@@++ +++ + + +@+
+++++ ++++++@@@@+++@@+ +++ ++++ +@+
+++ +++++@@@@+++@@+ + +++++ + + @+@+
++++++@@@++++@++ ++ +@@+ ++ + @++@
++ +++++@@++ +@++ ++ +@@++ +++ @@++
++++++++++ @+ ++++++++++ +++ ++ ++ + +@@++ ++ + + +@
@+++ +++ @+++ ++@+++ ++++ ++ ++++ ++@+ + +@
流程
1: 我们使用工具把图片, 转为线稿图
, 尽量去噪, 比如这个网站 http://www.atoolbox.net/Tool.php?Id=1099#google_vignette
2: 使用python代码, 将线稿图
转化为文本图
我们使用如下工具, 如果某些ascii_chars
不是想要的格式, 直接改就行
python
# coding=utf-8
from PIL import Image
# 打开图片文件
image = Image.open(r'H:\lyl_s.png')
# 调整图片大小
width, height = image.size
aspect_ratio = height / width
new_width = 400
new_height = 200
image = image.resize((new_width, new_height))
# 将每个像素转换为灰度值,并映射到ASCII字符上
ascii_chars = '@%#*+=-:. '
text_image = ''
for y in range(new_height):
for x in range(new_width):
pixel = image.getpixel((x, y))
brightness = sum(pixel) / 3 # 灰度值
char_index = int((brightness / 256 - 1)* len(ascii_chars)) # 映射到ASCII字符,确保不超出范围
text_image += ascii_chars[char_index]
text_image += '\n' # 换行
# 保存文本图片
with open('text_image.txt', 'w') as f:
f.write(text_image)