My early attempts were done in Javascript/Canvas, you can find them in the old version of my website. But Javascript is my comfort zone, so I wanted to leave it and try Python.
I have coded several types of brushes with different levels of distortion, colour mixing, impasto faking, palettes, etc. Created several drawing algorithms that change their behaviour depending on the details of the source images or other rules.
There are about 30 config parameters that change the way the image is generated - it can be close to original (like in Paris street image, which almost looks watercolour) or far from it (Amy Winehouse or Pamela Anderson images), making it look quite abstract.
In the beginning I have used Bezier curves from Cairo library (Union Jack image), later invented my own multi-dot pseudo Bezier (model on the beach image). Using Javascript pointer events iPad pencil movement can be captured and imported into python and used instead of drawing algorithms. By the way, I found out that JS has pointerEvent.pressure for pencils, did not know that before ;)
Largest format that I generated was about 10,000 x 15,000 pixels (150 megapixels). At 100ppi it's about 2.5 x 3.8 metres.
I have used photos from everywhere - google images, instagram, stock libraries. I do not have an intent to sell them, they were used merely for testing purposes.
If you can, look at them on a big display in a full screen mode.
"We don't make mistakes - we just have happy accidents." - Bob Ross