PowerShell 技能连载 - 创建 ASCII 艺术
PowerShell 的功能令人惊叹:只需要几行代码,就可以将任意照片和图片转化为一段 ASCII 艺术。PowerShell 只需要加载图片,然后然后逐行逐列扫描它,然后基于每个像素的亮度将每个像素替换为一个 ASCII 字符。
以下是该函数:
1 | function Convert-ImageToAsciiArt |
以下是它的使用方法:
1 | $Path = "C:\Users\Tobias\Desktop\Somepic.jpg" |
请确保调整了代码中的路径。将会在缺省的文本编辑器中打开 ASCII 艺术。请确保禁用了换行,选择一个等宽的字体和一个足够小的字号!
;@&&&&&&@&&&&@+-
:@&&&&&&&&&&&&&&&&&&:.
,&&&&&&&&&&&&&&&&&&&&&&&&&&*
-@&&&&&&&&&&&HHHHHH&&&&&&&&&&&&&*
:&&&&&&&&&&&&H&&&&&&&&&&&&&&&&&&&&&&&@
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,
:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&-
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
@&&&&&&&&H&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&-
&&&&&&&&H&&&@;:+&&&&&&&*-....,:@&&&&&&&&&&&&&&&&&&&@
&&&&&&&&H&&;........................*&&&&&&&H&&&&&&&&&.
.&&&&&&&&&H;...........................&&&&&&&&H&&&&&&&&&-
;&&&&&&&&&&:............................@@&&&&&&H&&&&&&&&&&
&&&&&&&&&&&.+...........................-.;&&&H&&H&&&&&&&&&&@
*&H&&&&&&&&;;..............................+@+&&HH&&&&&&&&&&&&
;&H&&&&&&&&................................@*.&&&H&&&&&&&&&&&&:
:&H&&&&&&&*...............................:*..&H&&&&&&&&&&&&&&@
,&&H&&&@&@...................................,&&&&&&&&&&&&&&&&&,
,&&&&&&:+....................................+*.;:&&&&&&&&&&&&&&
+&&&&&&............................................@*@+&&&&&&&&&,
&&&&&&;............................................,-..-+&&&&&&&
:&&&&&@-...................................................:&&&&&,
&&&&&&&.....................................................&&&&&-
&&&&&&+.....................................................&&&&&,,
:&&&&&;.....................................................&&&H&
&&&&&;.......................................,.,...........&&&&H&@
*-&&&&:...*&&&&&&&&&&&&&@*,.............-*&&&&&&&&&&&&:.....@&&&&+
&&&&:.+&&HHHHHHHHHHHHH&&&&..........+&&&&HHHHHHHHHHHHH*...+&&&&@
,###H*+;;:,...........-;*&&##########&&&*:..........:;*@:;*&###H:
:##H*.......................#@;---+#;.......................@###.
,@###+............+HH&+.....-&......-*......;&H&*............&##:.
,&&#-...........HHH&+H;....@;......,#.....@HHH;H@...........HH&-.
..;#,...........HHHHHH+....#........H,....&HHHHH&..........-#&:-
...H*...........-;;;;;....-H........;@....,;;;;;,..........;#&..
...&#.....................#-.........#.....................&H*..
...:H&........,.........-#@..........-#;..........,,......:#&,..
...-,&###&+::-,,::+&###+...... ......-###H*:::,,::+@####,....
..........,,,,,,,,........... ............,,,,,,,,..........
............................ ..............................
............................ .............................
.....................,..... ............................
....................,..... .......,...................
..................,,,... .......,.................
......................,. ..,......................
........................,,,.......................
..................................................
.................................................
.............,-..................--.............
...............--,,-----:-,. --...............
..................,,----,,...................
...........................................
.........................................
......................................
....................................
................................
..............................
.,,,,,,,,,,,,,,,,,,,,,,,,,,
,&...,,,,,,,,,,,,,,,,,,,,,,...@,
&HHH......,,,,,,,,,,,,,,,,,,.....-HHH&
:HHHHHHH&.........,,,,,,,,,,,........HHHHHHHH;
*HHHHHHHHHHHH+........................*HHHHHHHHHHHH@
-HHHHHHHHHHHHHHHHH&;..................;&HHHHHHHHHHHHHHHHH,
HHHHHHHHHHHHHHHHHHHHHHHH&*;:---::;*&HHHHHHHHHHHHHHHHHHHHHHH&
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
这儿有一个很酷的优化技巧:在 Convert-ImageToAsciiArt
函数中,请注意 $characters
。它是一个包含 ASCII 艺术中使用的字符的字符串,而这些字符是按亮度降序排列的。对于黑白作品,可以使用:
1 | $characters = [char]0x2588, ' ' |