Python 如何将最相似的Unicode字符返回到图像的某个部分?
我用Python制作了一个简单的转换器,将图像转换为ASCII。现在,它使用了各种深浅的黑色字符,因此它可以工作,但在低分辨率下很难辨认:例如,谷歌徽标显示为:Python 如何将最相似的Unicode字符返回到图像的某个部分?,python,image,image-processing,unicode,ascii,Python,Image,Image Processing,Unicode,Ascii,我用Python制作了一个简单的转换器,将图像转换为ASCII。现在,它使用了各种深浅的黑色字符,因此它可以工作,但在低分辨率下很难辨认:例如,谷歌徽标显示为: .. .;. .@ a; .. .; . .. a. @ ...;. aa .a.▒. ▒.;. ;.;; a. ▒ @a .;.. .; ..... . ..;;; ; ;.. .a.
.. .;. .@
a; .. .; . .. a. @ ...;.
aa .a.▒. ▒.;. ;.;; a. ▒ @a
.;.. .; ..... . ..;;; ; ;..
.a. .;
这几乎无法理解。是否有一种方法可以将每个部分与Unicode字符的子集进行比较,并返回最相似的字符,这样它就可以返回如下内容:
./--.\. /▒
a; ./-.; / \ ./ \\ ▒ ./━\.
aa -a.▒. ▒.|. |.;▒ ┃ ▒ ▒-~┘
\;.. /| \\_// \ / .\;;; ▒ \\.-
.pp--▒
更新 当你想要创建一个与原稿大小相同的图像时,方法并没有太大的不同,但正如马克已经指出的,即使在这里,你也可以为你使用的每个字母创建一个光栅图像。 我真的看不到一个更快的方法来比较你的图像块和一封信,以决定哪一个是最合适的 可能有一个提示:如果您使用这种方法,字母将在图像中可见,因为当您使用例如12pt字体时,每个字母的图像大小至少为10x15左右。当您现在转换一个1000x1500的图像时,它不是那么小,您只使用100x100个字母。 因此,不使用图像本身而使用图像渐变可能是值得考虑的。这可能会提供更好的图像,因为这样会选择一个字母,它很好地跟随边缘。 仅使用渐变,谷歌徽标看起来并不那么糟糕
这是一个旧线程,但我最好在这里添加我的解决方案。您可以使用盲文字符获得像素完美表示。像这样:
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡿⡻⡫⡫⡣⣣⢣⢇⢧⢫⢻⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡟⡟⣝⣜⠼⠼⢚⢚⢚⠓⠷⣧⣇⠧⡳⡱⣻⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡟⣏⡧⠧⠓⠍⡂⡂⠅⠌⠄⠄⠄⡁⠢⡈⣷⡹⡸⣪⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⠿⢿⢿⢿⢟⢏⡧⠗⡙⡐⡐⣌⢬⣒⣖⣼⣼⣸⢸⢐⢁⠂⡐⢰⡏⣎⢮⣾⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣾⣶⣿⢿?