<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
	<title><![CDATA[PublMe - Space: Posted Reaction by PublMe bot in PublMe]]></title>
	<link>https://publme.space/reactions/v/58446</link>
	<atom:link href="https://publme.space/reactions/v/58446" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">https://publme.space/reactions/v/58446</guid>
	<pubDate>Sat, 13 Sep 2025 22:00:00 +0200</pubDate>
	<link>https://publme.space/reactions/v/58446</link>
	<title><![CDATA[Posted Reaction by PublMe bot in PublMe]]></title>
	<description><![CDATA[
<p>Send Images to Your Terminal With Rich Pixels</p>
<div><img width="800" height="450" src="https://hackaday.com/wp-content/uploads/2025/09/rich-pixels-wide.png?w=800" alt="" srcset="https://hackaday.com/wp-content/uploads/2025/09/rich-pixels-wide.png 932w, https://hackaday.com/wp-content/uploads/2025/09/rich-pixels-wide.png?resize=250, 141 250w, https://hackaday.com/wp-content/uploads/2025/09/rich-pixels-wide.png?resize=400, 225 400w, https://hackaday.com/wp-content/uploads/2025/09/rich-pixels-wide.png?resize=800, 450 800w" data-attachment-id="828252" data-permalink="https://hackaday.com/2025/09/13/send-images-to-your-terminal-with-rich-pixels/rich-pixels-wide/" data-orig-file="https://hackaday.com/wp-content/uploads/2025/09/rich-pixels-wide.png" data-orig-size="932,524" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="rich-pixels-wide" data-image-description="" data-image-caption="" data-medium-file="https://hackaday.com/wp-content/uploads/2025/09/rich-pixels-wide.png?w=400" data-large-file="https://hackaday.com/wp-content/uploads/2025/09/rich-pixels-wide.png?w=800"></div><p>[darrenburns]’ <a rel="nofollow" href="https://github.com/darrenburns/rich-pixels" target="_blank">Rich Pixels</a> is a library for sending colorful images to a terminal. Give it an image, and it’ll dump it to your terminal in full color. While it also supports ASCII art, the cool part is how it makes it so easy to display an arbitrary image — a pixel-art rendition of it, anyway — in a terminal window.</p><p>How it does this is by cleverly representing two lines of pixels in the source image with a single terminal row of characters. Each vertical pixel pair is represented by a single Unicode ▄ (U+2584 “lower half block”) character. The trick is to set the <em>background</em> color of the half-block to the <em>upper</em> pixel’s RGB value, and the <em>foreground</em> color of the half-block to the <em>lower</em> pixel’s RGB. By doing this, a single half block character represents two vertically-stacked pixels. The only gotcha is that Rich Pixels doesn’t resize the source image; if one’s source image is 600 pixels wide, one’s terminal is going to receive 600 U+2584 characters per line to render the Rich Pixels version.</p><p>[Simon WIllison] took things a step further and made <code>show_image.py</code>, which works the same except it <a rel="nofollow" href="https://simonwillison.net/2025/Sep/2/rich-pixels/" target="_blank">resizes the source image to fit one’s terminal</a> first. This makes it much more flexible and intuitive.</p><p>The code is <a rel="nofollow" href="https://github.com/simonw/tools/blob/main/python/show_image.py" target="_blank">here on [Simon]’s tools GitHub</a>, a repository for software tools he finds useful, like the <a rel="nofollow" href="https://hackaday.com/2025/04/12/the-incomplete-json-pretty-printer-brought-to-you-by-vibes/">Incomplete JSON Pretty Printer</a>.</p>]]></description>
	<dc:creator>PublMe bot</dc:creator>
</item>

</channel>
</rss>