computer-generated SAXA art

hi, I need to make a drawing based on a photograph as shown on

However I wonder if this could be mimicked by software.

Any feedback well appreciated

thanks in advance,

Interesting. It looks like Ascii Art but the boldness of the font is variable.

Yes it could be done. Was done. By a high end programmer.
How was it done?

Perhaps with a process vaguely similar to image morphing. I have a hunch the algorithm reads ascii text characters one at time, maps them to x,y space on a target viewport and then inspects the same x,y coordinates on the original image, reads some luminosity information from there and then makes a decision about how bold to make a pixel approximation of the current ascii text character.

First impressions. It is not as simple as applying bold based on brightness. Upon close examination, you would find that the characters are not the same. Not only are the shapes variable but they also may encroach on their neighbours. More importantly, they conform to the harder edges, and from the edges fill out the rest of the flatter region. Lastly, I observe that, although this might be computer generated, there seems to be heavy human editing (or at least guidance) as well.

Sort of halftone dot sizes with letters/fonts instead of dots?

Yes - If I was going to try to reproduce these, I would start by rendering the text, blurring it and then thresholding the blurred text against a monochrome image - like a halftoning process.

1 Like

G’MIC has a halftone command and filter. We can start there I guess.

BTW @Iain, your Turbulent Halftone needs some restoration.


In principle this is straight forward. Just about anything can be used for a half-tone pattern if you are not concerned with accuracy.

#@gui iain_text_halftone2: iain_text_halftone2,iain_text_halftone2(0)
#@gui : radius = float (1,0,20)
#@gui : amount = float (1,0,2)
#@gui : gamma = float (1,0,2)
#@gui : blacks = float (0,0,255)
#@gui : whites = float (255,0,255)

# [0] photo
# [1] text

# pre process
-apply_gamma[0] $3
-unsharp[0] $1,$2
-c[0] $4,$5
-n 0,255

# oversample
-resize 400%,400%,1,1,3

# create grey shades by distance from letter
-gt[-1] 128
-distance[-1] 0

# do local normalisation to keep letters distinct as long as possible.

--dilate[-1] 7
-blur[-1] 2
-fill[-1] 10/i
-n[1] 0,255

# equalize so that halftone creates accurate gradient

-blur[1] 1
-blur[-1] 1

# apply halftone mask

-sub[1] 128
-gt 128

# restore to original size
-resize 25%,25%,1,1,3

# normalise
-n 0,255

@afre thanks. it should be fixed now.


Somehow if you can isolate each individal ascii charater and run G’MIC Morphological preset based on input image, this would be a way to get this result. Not a coder, though. Even so, I prefer Pingotec’s approach to creating ASCII art. :slight_smile:

Thank you very much for your support!
A first attempt already gave impressive results !!!


@Jorian_Burssens. That’s a Dutch text! Well done, interesting topic.

@paulmatth. Yes, I’m Dutch speaking (from Belgium)

Nice result.

Hello @Iain

I do not understand the script but if you would be so kind to do it for me i would really apreciate it!

Thanks a million !!!

Hi, @_Team_Trees please no copyrighted materials. Thanks.

hello, what do you mean?

Clearly that is not your photo of elon musk, thus we don’t want to host it.

I understand. It’s a school assignment. We had to pick someone we admired. I chose Elon Musk.

Very good. You can apply the filter to the image, and that’s fine. But we can’t host the image here for legal reasons.

Problem is I do not know how to apply the script because I do not know gmic

1 Like