<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: ascii-art</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/ascii-art.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2025-09-02T11:05:23+00:00</updated><author><name>Simon Willison</name></author><entry><title>Rich Pixels</title><link href="https://simonwillison.net/2025/Sep/2/rich-pixels/#atom-tag" rel="alternate"/><published>2025-09-02T11:05:23+00:00</published><updated>2025-09-02T11:05:23+00:00</updated><id>https://simonwillison.net/2025/Sep/2/rich-pixels/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/darrenburns/rich-pixels"&gt;Rich Pixels&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Neat Python library by Darren Burns adding pixel image support to the Rich terminal library, using tricks to render an image using full or half-height colored blocks.&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://github.com/darrenburns/rich-pixels/blob/a0745ebcc26b966d9dbac5875720364ee5c6a1d3/rich_pixels/_renderer.py#L123C25-L123C26"&gt;the key trick&lt;/a&gt; - it renders Unicode ▄ (U+2584, "lower half block") characters after setting a foreground and background color for the two pixels it needs to display.&lt;/p&gt;
&lt;p&gt;I got GPT-5 to &lt;a href="https://chatgpt.com/share/68b6c443-2408-8006-8f4a-6862755cd1e4"&gt;vibe code up&lt;/a&gt; a &lt;code&gt;show_image.py&lt;/code&gt; terminal command which resizes the provided image to fit the width and height of the current terminal and displays it using Rich Pixels. That &lt;a href="https://github.com/simonw/tools/blob/main/python/show_image.py"&gt;script is here&lt;/a&gt;, you can run it with &lt;code&gt;uv&lt;/code&gt; like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run https://tools.simonwillison.net/python/show_image.py \
  image.jpg
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here's what I got when I ran it against my V&amp;amp;A East Storehouse photo from &lt;a href="https://simonwillison.net/2025/Aug/27/london-culture/"&gt;this post&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Terminal window. I ran that command and it spat out quite a pleasing and recognizable pixel art version of the photograph." src="https://static.simonwillison.net/static/2025/pixel-storehouse.jpg" /&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ascii-art"&gt;ascii-art&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cli"&gt;cli&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/unicode"&gt;unicode&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/uv"&gt;uv&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-coding"&gt;vibe-coding&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt-5"&gt;gpt-5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rich"&gt;rich&lt;/a&gt;&lt;/p&gt;



</summary><category term="ascii-art"/><category term="cli"/><category term="python"/><category term="unicode"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="uv"/><category term="vibe-coding"/><category term="gpt-5"/><category term="rich"/></entry><entry><title>Monodraw for macOS</title><link href="https://simonwillison.net/2017/Nov/18/monodraw/#atom-tag" rel="alternate"/><published>2017-11-18T18:58:54+00:00</published><updated>2017-11-18T18:58:54+00:00</updated><id>https://simonwillison.net/2017/Nov/18/monodraw/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://monodraw.helftone.com/"&gt;Monodraw for macOS&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Spectacular OS X application for drawing ASCII art diagrams—it’s basically OmniGraffle for ASCII art. The output is beautiful, and it even lets you do things like draw connecting arrows between boxes and then re-arrange the boxes such that the arrows keep up with your changes.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=15726816"&gt;lfittl on Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ascii-art"&gt;ascii-art&lt;/a&gt;&lt;/p&gt;



</summary><category term="ascii-art"/></entry><entry><title>Mandelbrot set in PostgreSQL</title><link href="https://simonwillison.net/2009/Aug/13/mandelbrot/#atom-tag" rel="alternate"/><published>2009-08-13T14:23:19+00:00</published><updated>2009-08-13T14:23:19+00:00</updated><id>https://simonwillison.net/2009/Aug/13/mandelbrot/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://wiki.postgresql.org/wiki/Mandelbrot_set"&gt;Mandelbrot set in PostgreSQL&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Surprisingly short SQL statement that produces an ASCII art Mandelbrot set.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ascii-art"&gt;ascii-art&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fractals"&gt;fractals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mandelbrot"&gt;mandelbrot&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/postgresql"&gt;postgresql&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sql"&gt;sql&lt;/a&gt;&lt;/p&gt;



</summary><category term="ascii-art"/><category term="fractals"/><category term="mandelbrot"/><category term="postgresql"/><category term="sql"/></entry><entry><title>SQL pie chart</title><link href="https://simonwillison.net/2009/Aug/13/sql/#atom-tag" rel="alternate"/><published>2009-08-13T13:04:05+00:00</published><updated>2009-08-13T13:04:05+00:00</updated><id>https://simonwillison.net/2009/Aug/13/sql/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://code.openark.org/blog/mysql/sql-pie-chart"&gt;SQL pie chart&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Generating ASCII art pie charts using the world’s scariest MySQL SELECT statement.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ascii-art"&gt;ascii-art&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/graphing"&gt;graphing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mysql"&gt;mysql&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sql"&gt;sql&lt;/a&gt;&lt;/p&gt;



</summary><category term="ascii-art"/><category term="graphing"/><category term="mysql"/><category term="sql"/></entry></feed>