Not extremely complicated. There is a good number of works which you can use to see how to do the generation of such picture out of a photograph:
Java: Ascii art generator in Java[
^],
GitHub — korhner/asciimg: An ascii image generator written in Java.[
^],
Ascii Art for Java — Browse Files at SourceForge.net[
^],
https://dzone.com/articles/ascii-art-generator-java[
^];
see also:
http://bfy.tw/52AU[
^].
I hoped you would not ask me "how is my problem related to
ASCII art?". But, just in case, I'll explain. I noticed that the picture you referenced is composed of smaller pixel elements which look like separate well-recognizable
glyphs, functionally playing the same role as the character glyphs in "ASCII art". You can assign each element certain optical
density which can be later used by the algorithm of ASCII art (or very similar to that). To find the density, you can design each glyph to have certain different ratio of "white" and "black" color. For an available piece of art of this sort, you can easily scan it in a flat scanner, and count "white pixels" and "black pixels" in the image automatically (after some extreme contrasting performed on it).
This can be pretty funny stuff and some amount of work, but nothing principally difficult.
—SA