Вы не использовали тег конкретного языка программирования. Thefore, Mathematica go ..
Я использую Rasterize
, чтобы преобразовать письмо в изображение письма. Затем я могу извлечь пиксельную матрицу с ImageData
. Mean
всего пикселя - это одна возможность рассчитать окончательное значение пикселя для буквы. Подставляя это в функцию, которая запоминает пиксельные-значения, так что мы не должны рассчитать это снова и снова:
toPixel[c_String] := toPixel[c] = Mean[Flatten[ImageData[Rasterize[
Style[c, 30, FontFamily -> "Courier"], "Image", ColorSpace -> "Grayscale"]]]]
Теперь вы можете разделить вашу строку в строки, а затем применить это к каждому символу. После того, как обивка полученных списков, чтобы получить полную матрицу снова у вас есть изображение
data = toPixel /@ Characters[#] & /@ StringSplit[text, "\n"];
[email protected](PadRight[#, 40, 1] & /@ data) // ImageAdjust
Для этого текста
,i!!!!!!;,
.,;i!!!!!'`,uu,o$$bo.
!!!!!!!'.e$$$$$$$$$$$$$$.
!!!!!!! $$$$$$$$$$$$$$$$$P
!!!!!!!,`$$$$$$$$P""`,,`"
i!!!!!!!!,$$$$",oed$$$$$$
!!!!!!!!!'P".,e$$$$$$$$"'?
`!!!!!!!! z$'J$$$$$'.,$bd$b,
`!!!!!!f;$'d$$$$$$$$$$$$$P',c,.
!!!!!! $B,"?$$$$$P',uggg$$$$$P"
!!!!!!.$$$$be."'zd$$$P".,uooe$$r
`!!!',$$$$$$$$$c,"",ud$$$$$$$$$L
!! $$$$$$$$$$$$$$$$$$$$$$$$$$$$$
!'j$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
[email protected]@,?$$$$$$$$$$$$$$$$$$$$$$$$$$$$P
[email protected]@f:$$$$$$$$$$$$$$$$$$$$$$$$$$$'
"" `$$$$$$$$$$$$$$$$$$$$$$$$$$F
`3$$$$$$$$$$$$$$$$$$$$$$F
`"$$$$$P?$$$$$$$"`
`""
мы получаем
Поскольку символы не являются квадратами вам может понадобиться, чтобы перевести каждый символ в виде прямоугольной сетки пикселей. У меня возникло соблазн написать такую программу в течение многих лет. –
просто не пойми меня неправильно: мне нравится получать только один пиксель для каждого персонажа. На самом деле это просто программа для себя, но я уверен, что кто-то уже сделал это там;) – abimelex
Самая сложная часть - это создание таблицы цветов для каждого символа. Как только вы это сделали, это дюжина строк Python. –