<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	     xmlns:dc="http://purl.org/dc/elements/1.1/"
	   xmlns:atom="http://www.w3.org/2005/Atom"
	     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>images &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/images/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Fri, 27 Feb 2026 09:58:15 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>images &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[What's the smallest file size for a 1 pixel image?]]></title>
		<link>https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/</link>
					<comments>https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 05 Jan 2024 12:34:10 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[images]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=49135</guid>

					<description><![CDATA[There are lots of new image compression formats out there. They excel at taking large, complex pictures and algorithmically reducing them to smaller file sizes.  All of the comparisons I&#039;ve seen show how good they are at squashing down big files.  I wanted to go the other way. How good are modern codecs at dealing with tiny files?  Using GIMP, I created an image which was a single white pixel,…]]></description>
										<content:encoded><![CDATA[<p>There are lots of new image compression formats out there. They excel at taking large, complex pictures and algorithmically reducing them to smaller file sizes.  All of the comparisons I've seen show how good they are at squashing down big files.</p>

<p>I wanted to go the other way. How good are modern codecs at dealing with <em>tiny</em> files?</p>

<p>Using GIMP, I created an image which was a single white pixel, and saved it as a PNG. I then used <a href="https://squoosh.app">Squoosh</a> to convert it to a variety of modern formats using different encoding options. This is what I found:</p>

<table>
<thead>
<tr>
  <th>Filetype</th>
  <th align="right">Bytes</th>
</tr>
</thead>
<tbody>
<tr>
  <td><a href="https://shkspr.mobi/blog/wp-content/uploads/2024/01/1.avif">AVIF</a></td>
  <td align="right">303</td>
</tr>
<tr>
  <td><a href="https://shkspr.mobi/blog/wp-content/uploads/2024/01/1.jpg">JPG</a></td>
  <td align="right">155</td>
</tr>
<tr>
  <td><a href="https://shkspr.mobi/blog/wp-content/uploads/2024/01/1.bmp">BMP</a> <sup id="fnref:BMP"><a href="https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/#fn:BMP" class="footnote-ref" title="The BMP was created in ImageMagick and compressed with FileFormat.app." role="doc-noteref">0</a></sup></td>
  <td align="right">126</td>
</tr>
<tr>
  <td><a href="https://shkspr.mobi/blog/wp-content/uploads/2024/01/1.ico">ICO</a> <sup id="fnref:ICO"><a href="https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/#fn:ICO" class="footnote-ref" title="The ICO was created with convert -size 1x1 canvas:white w.ico" role="doc-noteref">1</a></sup></td>
  <td align="right">70</td>
</tr>
<tr>
  <td><a href="https://shkspr.mobi/blog/wp-content/uploads/2024/01/1.png">PNG</a> <sup id="fnref:PNG"><a href="https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/#fn:PNG" class="footnote-ref" title="See Evan Hahn's post about why this is the smallest PNG." role="doc-noteref">2</a></sup></td>
  <td align="right">67</td>
</tr>
<tr>
  <td><a href="https://shkspr.mobi/blog/wp-content/uploads/2024/01/1.gif">GIF</a>  <sup id="fnref:GIF"><a href="https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/#fn:GIF" class="footnote-ref" title="It is possible to go slightly smaller if you don't care about colour." role="doc-noteref">3</a></sup></td>
  <td align="right">35</td>
</tr>
<tr>
  <td><a href="https://shkspr.mobi/blog/wp-content/uploads/2024/01/1.webp">WEBP</a></td>
  <td align="right">30</td>
</tr>
<tr>
  <td><a href="https://shkspr.mobi/blog/wp-content/uploads/2024/01/1.jxl">JXL</a></td>
  <td align="right">24</td>
</tr>
<tr>
  <td><a href="https://shkspr.mobi/blog/wp-content/uploads/2024/01/1.qoi">QOI</a></td>
  <td align="right">23</td>
</tr>
</tbody>
</table>

<p>This is designed to be the "minimum viable <em>viewable</em> image".  I loved <a href="https://www.phpied.com/minimum-viable-no-image-image-src/">Stoyan Stefanov's "Minimum viable no-image image src"</a>. That creates a 42 byte SVG with no image data in it - so I thought I'd see what happens if you make a displayable image.</p>

<p>Some important things to note:</p>

<ul>
<li>Older image formats like BMP and GIF are smaller than newer formats like AVIF.</li>
<li>Some compression options make files larger in unexpected ways. The lossy WebP was <em>larger</em> than the lossless version.</li>
<li>Similarly, increasing the effort on an AVIF can also result in a larger filesize.</li>
<li>Neither <a href="https://en.wikipedia.org/wiki/JPEG_XL">JPEG XL</a> nor <a href="https://qoiformat.org/">QOI</a> are supported in mainstream browsers yet.</li>
<li><a href="https://aomediacodec.github.io/av1-avif/#image-item-properties">AVIF has a rather long and complex header</a> - that makes sense for large images, but bloats it for smaller ones.</li>
<li>Using <a href="https://github.com/google/brotli">Brotli</a>, it is possible to further compress the AVIF (203 Bytes), JPG (69 Bytes), BMP (63 Bytes), and ICO (30 Bytes) files.</li>
<li>WebP is the smallest file if you still need a <a href="https://en.wikipedia.org/wiki/Spacer_GIF">Spacer.gif</a>!</li>
</ul>

<p>Here's my challenge to you - can you do any better? What's the smallest filesize you can find for a <em>viewable</em> image?</p>

<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">

<li id="fn:BMP">
<p>The BMP was created in ImageMagick and compressed with <a href="https://products.fileformat.app/image/compress/bmp">FileFormat.app</a>.&nbsp;<a href="https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/#fnref:BMP" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:ICO">
<p>The ICO was created with <code>convert -size 1x1 canvas:white w.ico</code>&nbsp;<a href="https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/#fnref:ICO" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:PNG">
<p>See <a href="https://evanhahn.com/worlds-smallest-png/">Evan Hahn's post about why this is the smallest PNG</a>.&nbsp;<a href="https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/#fnref:PNG" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:GIF">
<p>It is possible to go <a href="http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever">slightly smaller if you don't care about colour</a>.&nbsp;<a href="https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/#fnref:GIF" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=49135&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2024/01/whats-the-smallest-file-size-for-a-1-pixel-image/feed/</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Selectively Compressed Images - A Hybrid Format]]></title>
		<link>https://shkspr.mobi/blog/2023/06/selectively-compressed-images-a-hybrid-format/</link>
					<comments>https://shkspr.mobi/blog/2023/06/selectively-compressed-images-a-hybrid-format/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 01 Jun 2023 11:34:53 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[images]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=45892</guid>

					<description><![CDATA[I have a screenshot of my phone&#039;s screen. It shows an app&#039;s user interface and a photo in the middle. Something like this:    If I set the compression to be lossy - the photo looks good but the UI looks bad. If I set the compression to be lossless - the UI looks good but the filesize is huge.  Is there a way to selectively compress different parts of an image? I know WebP and AVIF are pretty…]]></description>
										<content:encoded><![CDATA[<p>I have a screenshot of my phone's screen. It shows an app's user interface and a photo in the middle. Something like this:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2023/05/Camera-screenshot-40.jpg" alt="Screenshot of a camera app on a phone. The middle is a photo, the sides show the user interface." width="1024" height="512" class="aligncenter size-full wp-image-45893">

<p>If I set the compression to be lossy - the photo looks good but the UI looks bad.
If I set the compression to be lossless - the UI looks good but the filesize is huge.</p>

<p>Is there a way to selectively compress different parts of an image? I know WebP and AVIF are pretty magical but, as I understand it, the whole image is compressed with the same algorithm and the same settings.</p>

<p>There are two ways to do this. The impossible way and the cheating way.</p>

<h2 id="selective-compression"><a href="https://shkspr.mobi/blog/2023/06/selectively-compressed-images-a-hybrid-format/#selective-compression">Selective Compression</a></h2>

<p>In <em>theory</em> it should be possible to tell an image format to compress some chunks of an image with a different compression algorithm.</p>

<p>And yet... <em>none</em> of the documentation I've found shows that's possible.</p>

<p>GiMP's native XCF and Photoshop's PSD files work; they store different layers each of which can have a different filetype. I understand that TIFF and .djvu also have that capability.</p>

<p>But those sorts of files don't display in web browsers.</p>

<p>So...</p>

<h2 id="lets-cheat"><a href="https://shkspr.mobi/blog/2023/06/selectively-compressed-images-a-hybrid-format/#lets-cheat">Let's Cheat!</a></h2>

<p>It's possible to use an SVG to embed multiple images of different formats. SVG is used as, effectively, a layout engine.</p>

<p>The syntax is relatively straightforward:</p>

<pre><code class="language-svg">&lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1080 512"&gt;
   &lt;image width="1080" height="512" x="0" y="0"
      xlink:href="data:image/jpeg;base64,..........."
   /&gt;
   &lt;image width="1080" height="512" x="0" y="0"
      xlink:href="data:image/png;base64,..........."
   /&gt;
&lt;/svg&gt;
</code></pre>

<p>That draws the JPG then draws the PNG on top of it. If the PNG has a transparent section, the JPG will show through. The JPG can be set to as low a quality as you like and the PNG remains lossless.</p>

<p>Here's what it looks like - click for full size:</p>

<p><a href="https://shkspr.mobi/blog/wp-content/uploads/2023/06/Mixed-Compression.svg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2023/06/Mixed-Compression.svg" alt="Screenshot of a phone's camera app with a heavily compressed photo inside it." class="aligncenter size-full wp-image-45906" width="1080" height="512"></a></p>

<p>Embedded images are Base 64 encoded, which does lose some of the compression advantages. But, overall, it's smaller than a full PNG and better quality than a full JPG.</p>

<p>Look, if it's stupid but it works it's not stupid.</p>

<p>But surely there must be a way of doing this natively?</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=45892&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2023/06/selectively-compressed-images-a-hybrid-format/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Raster. Vector. Generative.]]></title>
		<link>https://shkspr.mobi/blog/2023/03/raster-vector-generative/</link>
					<comments>https://shkspr.mobi/blog/2023/03/raster-vector-generative/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 26 Mar 2023 11:34:05 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[images]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=45404</guid>

					<description><![CDATA[When I was a kid, I &#34;invented&#34; a brilliant new compression format. Rather than sending a digital image of, say, the Mona Lisa a user could just send the ASCII characters &#34;Mona Lisa&#34;. The receiving computer could look up the full image in its memory-banks and reproduce the work of art on screen. Genius!  Of course, it relies on the receiver have a copy of every single image in existence, but…]]></description>
										<content:encoded><![CDATA[<p>When I was a kid, I "invented" a brilliant new compression format. Rather than sending a digital image of, say, the Mona Lisa a user could just send the ASCII characters "Mona Lisa". The receiving computer could look up the full image in its memory-banks and reproduce the work of art on screen. Genius!  Of course, it relies on the receiver have a copy of every single image in existence, but that's just details...</p>

<p>It strikes me that AI might now get us part way to that being a reality.</p>

<p>Traditionally, images are stored in raster format - essentially a grid of pixel values. These files tend to be rather large, so compression is used to make them smaller using <a href="https://en.wikipedia.org/wiki/AV1#Technology">increasingly complex schemes</a>.</p>

<p>Similarly, vector graphics - which are usually written as text - can be compressed with <a href="https://en.wikipedia.org/wiki/Brotli">all sorts of wonderful algorithms</a>.</p>

<p>So what happens if we add AI to the mix?</p>

<p>A self-hosted AI image generator takes, very roughly, <a href="https://github.com/jina-ai/dalle-flow">a few hundred GB of disk space</a>, plus a large amount of RAM, and some fairly hefty compute.  But, once that's done, you could "compress" images by specifying an AI engine and weighted prompts like this:</p>

<p><code>&lt;img src="data:image/AI;MidJourney/Mona_Lisa+/Original_Style+++/Ornate_Frame---/600x800/" alt="An AI generated Mona Lisa" /&gt;</code></p>

<p>Perhaps that's a little far fetched. But back when DVDs first came out, people had to buy specialised hardware cards to decode the MPEG compression on their computers. Nowadays a cheap Raspberry Pi does the trick. In the future, all our computers will have multi-terrabyte AI models baked in.</p>

<p>But people generally want to ensure that the receiver sees roughly the same picture as the sender. Something you can't easily guarantee with a generative model.</p>

<p>What about this idea from Ben Hardill?</p>

<iframe src="https://bluetoot.hardill.me.uk/@ben/110072243614071065/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400" height="250" allowfullscreen="allowfullscreen"></iframe>

<p>Take something like a <a href="https://evanw.github.io/thumbhash/">ThumbHash</a> of an image, which is less than 1KB:</p>

<img src="https://evanw.github.io/thumbhash/images/field-thumbhash.png" width="256">

<p>You could, theoretically, embed that in HTML using something like:</p>

<p><code>&lt;img src="thumbhash.png" width="256" upscale="DALL-E" keyword="Field of grass with cloudy skies" /&gt;</code></p>

<p>And get:</p>

<img src="https://evanw.github.io/thumbhash/images/field.jpg" width="256">

<p>I think of things like the psychoacoustic compression of MP3 files and wonder whether those crappy 64kbps rips I have from the 1990s could be magically restored to sonic perfection by an AI?  Or perhaps I'll just ask ChatGPT to sing me a song, in the style of Paul McCartney, called "Maybe I'm Amazed".</p>

<p>I don't know if that's the future.  It's certainly <em>one</em> future.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=45404&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2023/03/raster-vector-generative/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[You can't screenshot or right click this image]]></title>
		<link>https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/</link>
					<comments>https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 10 Dec 2022 12:34:18 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[images]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=44057</guid>

					<description><![CDATA[People contact me with all sorts of weird opportunities. Some are fun. Some are not. I&#039;ve lost count of the number of NFT grifters who&#039;ve asked me to &#34;revolutionise&#34; the art space.  I&#039;m generally not a fan.  But I had one chat with someone who wanted to do something intriguing.  They were worried about people right-clicking or screenshotting their precious images and had a plan to stop that.  I…]]></description>
										<content:encoded><![CDATA[<p>People contact me with all sorts of <em>weird</em> opportunities. Some are fun. Some are not. I've lost count of the number of NFT grifters who've asked me to "revolutionise" the art space.  I'm generally not a fan.  But I had one chat with someone who wanted to do something intriguing.  They were worried about people right-clicking or screenshotting their precious images and had a plan to stop that.</p>

<p>I tried to explain to them that DRM <em>always</em> fails; you can't make data which can't be copied. I explained that artificial scarcity was harmful. They didn't care.</p>

<p>But, their proposed solution was intriguing. And, with their kind permission, I'm posting it here.  To be clear, I don't think this is <em>good</em> but I think it is vaguely interesting.</p>

<h2 id="interlacing"><a href="https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/#interlacing">Interlacing</a></h2>

<p>Back in the olden days, video was often <em>interlaced</em>. That is, the TV transmitter would broadcast the odd lines first, then the even lines. Your TV would draw the odd line then, in the millisecond before they faded away from the cathode-ray tube, draw the even lines.</p>

<p>Could we do the same with images?</p>

<p>Let's take this image of a Total Legitimate Bored Ape™
<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/11/ape.png" alt="A badly drawn cartoon of a monkey in a t-shirt." width="640" height="640" class="aligncenter size-full wp-image-44063"></p>

<p>With a scrap of Python, we can knock this into two interlaced images:</p>

<pre><code class="language-python">from PIL import Image
image = Image.open("ape.png")
pixels = image.load()
image.mode = "RGBA"

for y in range(image.height) :
   if (y%2 == 1) :
      for x in range(image.width) :
         pixels[x,y] = (0,0,0,0)

image.save("ape1.png")

for y in range(image.height) :
   if (y%2 == 0) :
      for x in range(image.width) :
         pixels[x,y] = (0,0,0,0)

image.save("ape2.png")
</code></pre>

<p>Which gives us:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/11/ape2.png" alt="Only the odd lines of the image are displayed." width="640" height="640" class="aligncenter size-full wp-image-44061" id="ape1"></p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/11/ape1.png" alt="Only the even lines of the image are displayed." width="640" height="640" class="aligncenter size-full wp-image-44062" id="ape2">

<p>Using JavaScript the first frame can be rendered onto a <code>&lt;canvas&gt;</code> element for a millisecond, wiped, and then the second displayed. Repeat.</p>

<p>Here's a demo of it in action - I kinda like the retro effect!</p>

<h3 id="%e2%9a%a0%ef%b8%8f-strobe-effect-warning"><a href="https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/#%e2%9a%a0%ef%b8%8f-strobe-effect-warning">⚠️ Strobe Effect Warning</a></h3>

<p><canvas id="cv" style="background-color: black;"></canvas></p>

<script>var image1  = document.getElementById("ape1"); var image2  = document.getElementById("ape2"); var canvas  = document.getElementById("cv"); canvas.width  = image1.width; canvas.height = image1.height;  var context = canvas.getContext("2d"); function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function drawInterlace() { frame = 0; while(true) { frame++; await sleep(1);  context.clearRect(0, 0, canvas.width, canvas.height); if (frame%2 == 0) {context.drawImage(image1, 0, 0); } else { context.drawImage(image2, 0, 0); } }  } drawInterlace();</script>

<p>If you right click on it, you'll only get half the image. If you take a screenshot, you'll only get half the image.  FOOLPROOF DRM!!!!!!</p>

<h2 id="expanding-the-complexity"><a href="https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/#expanding-the-complexity">Expanding the complexity</a></h2>

<p>Of course, you can <a href="https://stackoverflow.com/questions/20973528/canvas-disable-image-download">scramble an image before unscrambling it to the canvas</a> and all sort of other tricks.  You could have dozens of images rendering to the canvas in sequence.  You could draw individual pixels programmatically.  You could...</p>

<p>None of it matters of course. If you send pixels to a computer screen, they can be copied. It is possible to slow people down - but all it takes is for one person to work out how your scheme works and then it crumbles to dust.</p>

<p>As I said, I have a soft-spot for the shimmery effect. And I think it is kinda fun - in a code-golf way - to design obfuscation schemes.</p>

<p>But using anything like this for a form of digital restrictions management is daft.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=44057&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/12/you-cant-screenshot-or-right-click-this-image/feed/</wfw:commentRss>
			<slash:comments>14</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Other pixel-level meta data you could put in an image format]]></title>
		<link>https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/</link>
					<comments>https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 30 Nov 2022 12:34:50 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=43921</guid>

					<description><![CDATA[Image files are a grid of pixels - each pixel contains colour information.  But they don&#039;t just have to contain colour information.  Here are some thoughts on other things that a future image format might contain.  What exists already?  A typical bitmap image looks like this under the hood:    0      1      2     3 0 Black  Red    Red   Blue 1 Red    White  Blue  Yellow 2 Orange Purple Green…]]></description>
										<content:encoded><![CDATA[<p>Image files are a grid of pixels - each pixel contains colour information<sup id="fnref:simplified"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#fn:simplified" class="footnote-ref" title="It is, of course, much more complicated than that." role="doc-noteref">0</a></sup>.  But they don't <em>just</em> have to contain colour information.  Here are some thoughts on other things that a future image format might contain.</p>

<h2 id="what-exists-already"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#what-exists-already">What exists already?</a></h2>

<p>A typical bitmap image looks like this under the hood:</p>

<pre><code class="language-text">  0      1      2     3
0 Black  Red    Red   Blue
1 Red    White  Blue  Yellow
2 Orange Purple Green Brown
...
</code></pre>

<p>That is a grid of pixels, each with a colour value.</p>

<p>Modern image formats can also contain pixel-level detail about transparency.  When an image is displayed above a different image, the computer calculates how much of the lower image's colour is mixed with the upper image's colour.</p>

<p>Some image formats also allow pixel-level detail about brightness<sup id="fnref:contrast"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#fn:contrast" class="footnote-ref" title="Again - so much more complicated in reality." role="doc-noteref">1</a></sup>. A device might be able to set the brightness on individual parts of the image.</p>

<p>So you end up with an image which looks like:</p>

<pre><code class="language-text">  0                    1                             2     3
0 Black                Red - but 50% transparent     Red   Blue
1 Red - but really dim White - as bright as possible Blue  Yellow
...
</code></pre>

<h2 id="thermal-infrared"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#thermal-infrared">Thermal / Infrared</a></h2>

<p>Most image formats only deal with <em>visible</em> light. But there are a <a href="https://shkspr.mobi/blog/2021/10/gadget-review-seek-infrared-camera/">bunch of cameras which can capture infrared</a>.  Would it be useful to capture the heat of scene being photographed?</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/03/BBC-Cat60-Infrared.jpg" alt="A thermal photo of my face. My nose is surprisingly cold." width="1024" height="576" class="aligncenter size-full wp-image-26559">

<p>A future image format could contain details about visible and <em>invisible</em> light.</p>

<h2 id="invisible-wavelengths"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#invisible-wavelengths">Invisible Wavelengths</a></h2>

<p>Objects in the real worlds don't just give off thermal signatures - they often have information in the ultraviolet wavelengths as well.</p>

<p>For example, <a href="https://web.archive.org/web/20220925111821/https://www.howplantswork.com/2008/11/30/flowers-what-you-see-versus-what-the-bees-see/">flowers often have "landing guides" which are only visible to bees and other insects</a>.</p>

<p><a title="Plantsurfer, CC BY-SA 2.0 UK <https://creativecommons.org/licenses/by-sa/2.0/uk/deed.en>, via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File:Mimulus_nectar_guide_UV_VIS.jpg"><img width="512" alt="Mimulus nectar guide UV VIS" src="https://upload.wikimedia.org/wikipedia/commons/6/6b/Mimulus_nectar_guide_UV_VIS.jpg" class="aligncenter size-full"></a></p>

<p>Being able to capture <em>beyond</em> visible light may be a useful property for an image format.</p>

<h2 id="depth"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#depth">Depth</a></h2>

<p>Modern cameras often fire out an invisible infrared grid to allow for quick focussing and to aid with <a href="https://en.wikipedia.org/wiki/Bokeh">depth effects like bokeh</a>.  An image could store the depth map of its subject.</p>

<p>Here's a series of <a href="https://shkspr.mobi/blog/2016/11/how-3d-is-star-wars-the-force-awakens/">depth maps I made from analysing 3D movies</a>:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/04/different-depth-maps.png" alt="Different depth maps of various accuracy" width="533" height="715" class="aligncenter size-full wp-image-29243">

<p>This could allow for better 3D displays, or for easier image editing.</p>

<h2 id="angle"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#angle">Angle</a></h2>

<p>Images are typically 2D. The present pixels on a <em>flat</em> rectangular plane. But they aren't limited to that.  Image panoramas and "<a href="https://shkspr.mobi/blog/2017/08/lg-360-camera-review/">spherical</a>" images allow for display on a <em>non-flat</em> surface.</p>

<p>Here's an equirectangular 2D image which is rendered as a sphere:</p>

<iframe style="border-style:none;" width="1024" height="400" allowfullscreen="" src="https://shkspr.mobi/pannellum/pannellum.htm#panorama=/blog/wp-content/uploads/2019/11/20190912_194621.jpg&amp;autoRotate=2&amp;autoLoad=false&amp;title=Interior"></iframe>

<p>An image <em>could</em> contain pixel-level data showing the angle away from the viewer. That would allow for a more accurate rendering in VR or other non-flat displays.</p>

<h2 id="object-detection"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#object-detection">Object Detection</a></h2>

<p>Now we start to get funky! AI is getting pretty good at detecting specific objects in photographs.  What happens if we start marking them up <em>within</em> the image itself?</p>

<p>Either something as basic as this:</p>

<p><a title="(MTheiler), CC BY-SA 4.0 <https://creativecommons.org/licenses/by-sa/4.0>, via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File:Detected-with-YOLO--Schreibtisch-mit-Objekten.jpg"><img width="512" alt="Detected-with-YOLO--Schreibtisch-mit-Objekten" src="https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Detected-with-YOLO--Schreibtisch-mit-Objekten.jpg/512px-Detected-with-YOLO--Schreibtisch-mit-Objekten.jpg" class="aligncenter size-full"></a></p>

<p>Or as detailed as this:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2022/11/Tight-detection.jpg" alt="Two children sat on a ledge. One has a tightly bound yellow border around their outline. The other has a similar green border. The wall they're sitting on has a red border which follows its shape." width="690" height="518" class="aligncenter size-full wp-image-43923"></p>

<p>That would make it possible to easily remove or replace objects from images.</p>

<p>Combined with depth-sensing, it could be a powerful way to edit images.</p>

<h2 id="extra-texture"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#extra-texture">Extra Texture</a></h2>

<p>Colour replication depends heavily on the material which is imbued with that colour. That's what Pantone is all about<sup id="fnref:pantone"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#fn:pantone" class="footnote-ref" title="More complicated etc etc" role="doc-noteref">2</a></sup>.  Suppose an object has a sky-blue colour - is it useful to know that it is a heavy woollen jumper rather than a thin nylon t-shirt?</p>

<h2 id="wheels-within-wheels-and-layers-within-layers"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#wheels-within-wheels-and-layers-within-layers">Wheels within wheels and layers within layers</a></h2>

<p>It's probably sensible to implement something like this as multiple layers, rather than saying every pixel must be RGBA+Depth+Heat+Angle+Object+etc+etc.</p>

<p>Different layers could have different resolution (Infrared is typically lower res than the image it is overlayed on). Different layers might be compressed more efficiently by different algorithms.</p>

<p>We're used to layered images in formats like PSD and XCF - so why not in a future version of JPEG or AVIF?</p>

<h2 id="what-else"><a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#what-else">What else?</a></h2>

<p>What other things <em>might</em> be useful for an image to store at an individual pixel-level? Drop a note in the comments?</p>

<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">

<li id="fn:simplified">
<p>It is, of course, much more complicated than that.&nbsp;<a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#fnref:simplified" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:contrast">
<p>Again - <em>so</em> much more complicated in reality.&nbsp;<a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#fnref:contrast" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:pantone">
<p>More complicated etc etc&nbsp;<a href="https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/#fnref:pantone" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=43921&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2022/11/other-pixel-level-meta-data-you-could-put-in-an-image-format/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Quick Image Montages]]></title>
		<link>https://shkspr.mobi/blog/2021/11/quick-image-montages/</link>
					<comments>https://shkspr.mobi/blog/2021/11/quick-image-montages/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 21 Nov 2021 12:34:48 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=40972</guid>

					<description><![CDATA[(Mostly notes to myself.)  If you have a lot of images in a directory, and want to quickly make an image montage, here&#039;s how to do it on Linux using ImageMagick.  First up, this command finds all JPG file, then resizes them so they fit in a maximum box of 256x256, then sets the quality to 75%, then saves them as JPGs:  find ./ -type f -iname &#34;*.jpg&#34; -exec mogrify -verbose -format jpg -layers…]]></description>
										<content:encoded><![CDATA[<p>(Mostly notes to myself.)</p>

<p>If you have a lot of images in a directory, and want to quickly make an image montage, here's how to do it on Linux using ImageMagick.</p>

<p>First up, this command finds all JPG file, then resizes them so they fit in a maximum box of 256x256, then sets the quality to 75%, then saves them as JPGs:</p>

<p><code>find ./ -type f -iname "*.jpg" -exec mogrify -verbose -format jpg -layers Dispose -resize 256\&gt;x256\&gt; -quality 75% {} +</code></p>

<p>This will <strong>overwrite your existing files</strong> so make sure you have a backup.</p>

<p>This will take all JPG files, and then arrange them in a montage which is 10 images wide and 5 images high, with no padding between the images, and then save them as a file called "montage.png":</p>

<p><code>montage *.jpg -tile 10x5 -geometry +0+0 montage.png</code></p>

<p>If you have more than 10x5 images, this will spit out multiple files. If you want to specify the width, but not the height, use:</p>

<p><code>montage *.jpg -tile 10x -geometry +0+0 montage.png</code></p>

<p>Handy if you can't be bothered counting how many images you have.</p>

<p>The ordering is "sort of alphabetical". That is, it sorts them by first character. You may want to renumber your files as <code>00001.jpg</code> etc if you have a specific ordering in mind.</p>

<p>The output looks like this:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2021/11/montageLsmall.jpg" alt="85 Book Covers." width="1865" height="845" class="aligncenter size-full wp-image-40970"></p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=40972&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/11/quick-image-montages/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Turning an eInk screen into a monochrome art gallery]]></title>
		<link>https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/</link>
					<comments>https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 26 Sep 2021 11:34:43 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[eink]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[nook]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=40394</guid>

					<description><![CDATA[Previously on Terence Eden&#039;s Blog: I turned an old eReader into an Information Screen.  This time, I&#039;m taking a different Nook, and turning it into a magic gallery.  Here&#039;s what it looks like in action:  Terence Eden is on Mastodon@edentUpcycled an old eReader into an art frame.Displays a new black &#38; white piece of art from Flickr every few minutes.Full write-up this weekend, but pretty…]]></description>
										<content:encoded><![CDATA[<p><em>Previously on Terence Eden's Blog:</em> <a href="https://shkspr.mobi/blog/2020/02/turn-an-old-ereader-into-an-information-screen-nook-str/">I turned an old eReader into an Information Screen</a>.</p>

<p>This time, I'm taking a different Nook, and turning it into a magic gallery.  Here's what it looks like in action:</p>

<blockquote class="social-embed" id="social-embed-1440788013236195335" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">Upcycled an old eReader into an art frame.<br>Displays a new black &amp; white piece of art from Flickr every few minutes.<br>Full write-up this weekend, but pretty straightforward to do. <a href="https://twitter.com/edent/status/1440788013236195335/photo/1">pic.x.com/ttvrbhz3ee</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/E_603EtVcAYB5NZ.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="A wooden frame surrounds an eInk screen. A monochrome photo of graffiti is displayed." src="data:image/webp;base64,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"></a><a href="https://pbs.twimg.com/media/E_606roUUAM7P4W.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="The same frame showing a moody photograph." src="data:image/webp;base64,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"></a><a href="https://pbs.twimg.com/media/E_60-SmVUAgeFJB.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="The same frame displays a black and white drawing." src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/1440788013236195335"><span aria-label="137 likes" class="social-embed-meta">❤️ 137</span><span aria-label="14 replies" class="social-embed-meta">💬 14</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2021-09-22T21:20:05.000Z" itemprop="datePublished">21:20 - Wed 22 September 2021</time></a></footer></blockquote>

<h2 id="video"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#video">Video</a></h2>

<p>With the front light off:</p>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-40394-3" width="620" height="349" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2021/09/offweb.mp4?_=3"><a href="https://shkspr.mobi/blog/wp-content/uploads/2021/09/offweb.mp4">https://shkspr.mobi/blog/wp-content/uploads/2021/09/offweb.mp4</a></video></div><p></p>

<p>With the front light on:</p>

<p></p><div style="width: 620px;" class="wp-video"><video class="wp-video-shortcode" id="video-40394-4" width="620" height="349" preload="metadata" controls="controls"><source type="video/mp4" src="https://shkspr.mobi/blog/wp-content/uploads/2021/09/onweb.mp4?_=4"><a href="https://shkspr.mobi/blog/wp-content/uploads/2021/09/onweb.mp4">https://shkspr.mobi/blog/wp-content/uploads/2021/09/onweb.mp4</a></video></div><p></p>

<h2 id="how-it-works"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#how-it-works">How it works</a></h2>

<p>Every few minutes, it finds a black and white artistic image from Flickr and displays it. Simple!</p>

<h2 id="inspiration"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#inspiration">Inspiration</a></h2>

<p><a href="https://debugger.medium.com/how-to-build-a-very-slow-movie-player-in-2020-c5745052e4e4">Ambient home cinema by Tom Whitwell</a></p>

<h2 id="build"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#build">Build</a></h2>

<p>I've previously <a href="https://shkspr.mobi/blog/2015/09/replacing-the-battery-on-a-barnes-noble-eink-nook/">replaced the battery on an eInk Nook</a>, so I know how <a href="https://www.ifixit.com/Teardown/Nook+Simple+Touch+with+GlowLight+Teardown/9301">easy they are to disassemble</a>. But for this I wanted to keep the plastic frame on, so that I'd be able to attach a more æsthetically pleasing wooden picture frame.</p>

<p>Finding a picture frame of the right size was a little tricky. The physical dimension of the unit are ~170mm x ~140mm. But the screen is only ~125mm x ~93mm .</p>

<p>I used <a href="https://www.eframe.co.uk/">eFrame</a> - they have a really handy website for custom sized frames and inserts. I ordered a mount for an 135mm x 103mm picture (they cut them slightly smaller but I didn't want any overhang) with 20mm top and bottom borders, and 35mm left and right borders. That gave me enough space to fit the Nook. But, as long as the aperture lets you see the eInk, and masks off the plastic frame, you should be OK.</p>

<p>I was also able to buy a frame without a glass front. As this is my first attempt, I went for simple and cheap wood - rather than something more ornate and artistic.  Total cost including shipping was £25.</p>

<h3 id="attaching-the-frame"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#attaching-the-frame">Attaching the frame</a></h3>

<p>It is useful to be able to get to the main "N" button - and there needs to be a gap for the charging cable. I thought about cutting out a little bit of the frame but, in the end, it was easier to attach the Nook to the frame using velcro and blu-tak. Because of the weight of the Nook, I used some sturdy hooks for the wall mount.</p>

<h2 id="power"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#power">Power</a></h2>

<p>There wasn't enough room in the frame for a normal USB cable, so I used a <a href="https://amzn.to/3CD6c7K">right-angled micro-USB cable</a>.  With the page refreshing every 5 minutes between 0600-2300, it got about 3 days of battery life - less if it used the Glow-Light. So a permanent wired connection seemed sensible.</p>

<h2 id="background"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#background">Background</a></h2>

<p>On the surface this seems quite simple - get a bunch of images and display them. But there are some limitations.</p>

<p>The original <a href="https://en.wikipedia.org/wiki/Nook_Simple_Touch">Nook Simple Touch</a> is, bless it, an old and slow device. I want to do the minimum amount of processing on it as possible. The screen resolution is only 600x800.  I don't want to convert colour artwork to black and white - that will just look messy. I also want the image size to roughly match the screen - so things aren't shrunk down.</p>

<p>So, I want a list of art which meets the following criteria:</p>

<ul>
<li>Intended for monochrome display<sup id="fnref:mono"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fn:mono" class="footnote-ref" title="OK, bit more complicated than that. eInk Pearl can display 16 shades of grey." role="doc-noteref">0</a></sup></li>
<li>Roughly 4:3 aspect ratio</li>
<li>Proper art<sup id="fnref:1"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fn:1" class="footnote-ref" title="Whatever that is..." role="doc-noteref">1</a></sup> by real artists<sup id="fnref:2"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fn:2" class="footnote-ref" title="Whoever they are..." role="doc-noteref">2</a></sup></li>
</ul>

<p>I started by looking at the Open Data produced by various museums and art galleries. Unfortunately, none of them indicated whether an artwork was greyscale. So, I turned to Flickr!</p>

<h2 id="using-the-flickr-api"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#using-the-flickr-api">Using the Flickr API</a></h2>

<p>Sadly, the Flickr API has been neglected for the best part of a decade. So the documentation is grossly out of date.</p>

<p>Two of the undocumented Search API calls are <code>styles</code> and <code>orientation</code>. I use them to search for black and white images in landscape orientation.
You can discover more by using the <a href="https://www.flickr.com/search/?text=">Flickr search website</a> and opening the "Advanced" panel.</p>

<p>The rest of the API call is quite standard. A keyword to search for ("art") - or whatever you want. Sorted by "interestingness" - although popularity is also a good metric. With <code>safe_search</code> turned off - no prudes in our house. And an image size <a href="https://www.flickr.com/services/api/misc.urls.html">no wider that 800px</a> - because serving a correctly scaled image means less work for the eReader.</p>

<h2 id="the-code"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#the-code">The Code</a></h2>

<p>It is almost embarrassing in its simplicity. It uses <a href="https://github.com/samwilson/phpflickr/">Sam Wilson's PHP library for Flickr</a>. It grabs 100 images, and then picks a random one to serve. It is resized to fit in a bounding box of 800x600 and repaginated to centre the image. The image is rotated it 90 degrees and served over HTTP with an appropriate caching policy. Nothing else.  Here it is<sup id="fnref:mit"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fn:mit" class="footnote-ref" title="Licenced as MIT - but it is so basic that I won't be annoyed if you do something else with it." role="doc-noteref">3</a></sup>.</p>

<pre><code class="language-php">require_once 'vendor/autoload.php';
$flickr = new \Samwilson\PhpFlickr\PhpFlickr("123465789");

$search_terms = ["art", "artistic", "painting", "drawing"];
$search_rand = array_rand($search_terms, 1);

$sort_terms = ["date-posted-asc", "date-posted-desc", "date-taken-asc", "date-taken-desc", "interestingness-desc", "interestingness-asc", "relevance"];
$sort_rand = array_rand($sort_terms, 1);

$s = $flickr-&gt;photos()-&gt;search(["text"        =&gt; $search_terms[$search_rand],
                                "per_page"    =&gt; "100",
                                "styles"      =&gt; "blackandwhite",
                                "orientation" =&gt; "landscape",
                                "sort"        =&gt; $sort_terms[$sort_rand],
                                "safe_search" =&gt;"3"
                               ]);

$number_of_photos = count($s["photo"]);

$random_photo = random_int(0, $number_of_photos - 1);

$p = $s["photo"][$random_photo];

$farm   = $p["farm"];
$server = $p["server"];
$id     = $p["id"];
$secret = $p["secret"];
$title  = $p["title"];

$image_url = "https://live.staticflickr.com/{$server}/{$id}_{$secret}_c.jpg";

$image = imagecreatefromjpeg( $image_url );

$cropped = imagecropauto( $image, IMG_CROP_DEFAULT );
if ( $cropped !== false ) { 
   imagedestroy($image);  
   $image = $cropped;
}

$x = imagesx( $image );
$y = imagesy( $image );

$width_ratio  = $x / 800;
$height_ratio = $y / 600;

// Scale
if ( $height_ratio &gt;= $width_ratio ) {
   $new_height = ( 600 / $y ) * $x;
   $scaled = imagescale( $image, $new_height, 600 );
} else {
   $scaled = imagescale( $image, 800, -1 );
}

$x = imagesx( $scaled );
$y = imagesy( $scaled );


// Make a background canvas
$canvas = imagecreatetruecolor( 800, 600 );
$black  = imagecolorallocate( $canvas, 0, 0, 0 );
imagefilledrectangle( $canvas, 0, 0, 800, 600, $black );

$dst_x = ( ( 800 - $x ) / 2 );
$dst_y = ( ( 600 - $y ) / 2 );

imagecopy( $canvas, $scaled, $dst_x, $dst_y, 0, 0, $x, $y );

$rotated = imagerotate( $canvas, 90, 0 );

header('Content-type: image/jpeg');
header("Expires: on, 01 Jan 1970 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

imagejpeg( $rotated );

// Tidy Up
imagedestroy( $image );
imagedestroy( $scaled );
imagedestroy( $rotated );
</code></pre>

<h2 id="displaying"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#displaying">Displaying</a></h2>

<p>As I mentioned in <a href="https://shkspr.mobi/blog/2020/02/turn-an-old-ereader-into-an-information-screen-nook-str/">my previous post about displaying web pages on the Nook</a> - the browser is slow, old, and can't handle http<strong>s</strong> connections.</p>

<p>So I used <a href="https://github.com/jfriesne/Electric-Sign">ElectricSign</a> which is an old Android app. Give it a URL and it will display the contents on screen. It can be set to periodically refresh.</p>

<p>I've had it running for months on a different screen and it hasn't crashed.</p>

<p>That's it!</p>

<h2 id="todo"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#todo">TODO</a></h2>

<ul>
<li>Buy more cheap, 2nd hand eInk screens on eBay. Preferably larger and with higher DPI.</li>
<li>Get some fancy frames.</li>
<li>Start a pirate art museum.</li>
<li>Monetise it by tracking how long people stare at a particular artwork.</li>
<li>BitCoin?<sup id="fnref:lol"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fn:lol" class="footnote-ref" title="LOL! Nope!" role="doc-noteref">4</a></sup></li>
</ul>

<h2 id="thanks-for-reading"><a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#thanks-for-reading">Thanks for reading</a></h2>

<p>If you've enjoyed this blog post, you can <a href="https://www.amazon.co.uk/hz/wishlist/ls/13GFCFR2B2IX4?type=wishlist&amp;linkCode=sl2&amp;tag=shksprblogwish-21">buy me something from my wishlist</a> or <a href="https://github.com/sponsors/edent">sponsor my GitHub</a>.  Find out more way to <a href="https://shkspr.mobi/blog/support/">support this blog</a>.</p>

<div id="footnotes" role="doc-endnotes">
<hr aria-label="Footnotes">
<ol start="0">

<li id="fn:mono">
<p>OK, bit more complicated than that. <a href="https://wiki.mobileread.com/wiki/E_Ink_Pearl">eInk Pearl can display 16 shades of grey</a>.&nbsp;<a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fnref:mono" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:1">
<p>Whatever that is...&nbsp;<a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:2">
<p>Whoever they are...&nbsp;<a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:mit">
<p>Licenced as MIT - but it is so basic that I won't be annoyed if you do something else with it.&nbsp;<a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fnref:mit" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

<li id="fn:lol">
<p>LOL! Nope!&nbsp;<a href="https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/#fnref:lol" class="footnote-backref" role="doc-backlink">↩︎</a></p>
</li>

</ol>
</div>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=40394&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2021/09/turning-an-eink-screen-into-a-monochrome-art-gallery/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2021/09/offweb.mp4" length="1424365" type="video/mp4" />
<enclosure url="https://shkspr.mobi/blog/wp-content/uploads/2021/09/onweb.mp4" length="1274366" type="video/mp4" />

			</item>
		<item>
		<title><![CDATA[Coping with HEIC in the browser]]></title>
		<link>https://shkspr.mobi/blog/2020/12/coping-with-heic-in-the-browser/</link>
					<comments>https://shkspr.mobi/blog/2020/12/coping-with-heic-in-the-browser/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Thu, 03 Dec 2020 12:58:06 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[web dev]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=37349</guid>

					<description><![CDATA[Apple&#039;s HEIC format is... annoying. At the moment, Apple&#039;s products are the only mainstream cameras which use it. Forums are littered with people trying to upload HEIC files to web services and failing.  So, here are four quick tips for dealing with this formal.  Display in browser  Absolutely no browser supports HEIC. Not even Apple&#039;s own browser supports it. Why?  Terence Eden is on…]]></description>
										<content:encoded><![CDATA[<p>Apple's HEIC format is... annoying. At the moment, Apple's products are the only mainstream cameras which use it. Forums are littered with people trying to upload HEIC files to web services and failing.</p>

<p>So, here are four quick tips for dealing with this formal.</p>

<h2 id="display-in-browser"><a href="https://shkspr.mobi/blog/2020/12/coping-with-heic-in-the-browser/#display-in-browser">Display in browser</a></h2>

<p>Absolutely <a href="https://caniuse.com/heif"><em>no</em> browser supports HEIC</a>. Not even Apple's own browser supports it. Why?</p>

<blockquote class="social-embed" id="social-embed-1319384983866208256" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><blockquote class="social-embed" id="social-embed-1319384768090411008" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">OK, but *why* is the iPhone's default photo format HEIC if the iPhone's default browser can't display it?<br><a href="https://caniuse.com/?search=heic">caniuse.com/?search=heic</a></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/1319384768090411008"><span aria-label="22 likes" class="social-embed-meta">❤️ 22</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="5 reposts" class="social-embed-meta">🔁 5</span><time datetime="2020-10-22T21:06:56.000Z" itemprop="datePublished">21:06 - Thu 22 October 2020</time></a></footer></blockquote><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/ursonate" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRtgBAABXRUJQVlA4IMwBAACwCgCdASowADAAPrVKn0wnI6KiLjQLMOAWiWUAyNc1phBps2jBq+Tefiqz3acNkvJ+QtGg/kplOqb+XTA8mEi17OHrn6Ka9T38WReNmkUBfmA5huJU+iNYMZzqOnpwAP77LHvTpBafVOmAtZUfogf1WM9IEKubah444hX2ZfmKswVmn+O1IgP4z7BK8+ePlLhKHpfBe1B03N69dujAknutlQJoTSQHM9WrcPwO4H1O+fhCI9YqPgNsIZWUzUG0hdG0gJdYEX7JyV5lH7EQqypyFpgYG7RTgT+q2JChB0NNMizgOJemt9IzgbYFzRwB0+G+IG0wISofQO4lGucPJp6BxEjmDASNhYbqZhwO3OKjmOdqECqrSyUpyD1+1PrjgPc4yqhVUdZQDNy5fj4ec8GJjRTjAMEdoGq6roHzgYP17xGc2NNVuUXvUUmqZbfMRSV9yPnK+OouPQCI7MyGBoTkcxRX5P8CAyWitW1TKPeurLgnpkii5MtMI5Lx5e+X2PLEVtclHr8PA/xHhSfxIQ1l5Rs5nT9uRYfYKv9xssdVCaTWlNnONjAZwBVoUhTJ1SWquBvu4gFdPb066fRVtFbmO84XNwQREt8oAAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">🅨🅞🅤 ⓜⓤⓢⓣ 𝘣𝘦 𝖘𝖊𝖊𝖎𝖓𝖌 .</p>@ursonate</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/1319384768090411008">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> The two teams hate each other.</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/ursonate/status/1319384983866208256"><span aria-label="4 likes" class="social-embed-meta">❤️ 4</span><span aria-label="1 replies" class="social-embed-meta">💬 1</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2020-10-22T21:07:47.000Z" itemprop="datePublished">21:07 - Thu 22 October 2020</time></a></footer></blockquote>

<p>So, we have to use JavaScript.  There's a brilliant <a href="https://github.com/strukturag/libheif">open source library called libheif</a>.  It's possible to compile it to JavaScript - but I couldn't get it to work.  The official repo <a href="https://github.com/strukturag/libheif/issues/18">doesn't make a compiled version available</a>. Luckily, Kiril Vatev has released a <a href="https://github.com/catdad-experiments/libheif-emscripten">compiled emscripted version</a>.</p>

<p>It's about 1.5MB - which is a bit abusive to your users - although it zips down to about 350KB.</p>

<p>The image has to be loaded into a 2D canvas to be rendered. Even on a modern laptop this is likely to take a few seconds.</p>

<p>There's a <a href="https://github.com/strukturag/libheif/blob/gh-pages/index.html">demo page</a> which shows you how to get started. It's tedious, but it works.</p>

<h2 id="get-metadata"><a href="https://shkspr.mobi/blog/2020/12/coping-with-heic-in-the-browser/#get-metadata">Get Metadata</a></h2>

<p>Similarly, there's a <a href="https://github.com/exif-heic-js/exif-heic-js">separate library for reading HEIC metadata</a>. This one is a much more reasonable 20KB.</p>

<p>That's pretty easy to use - and quick. HEIC contains pretty standard EXIF. GPS co-ordinates, camera information, that sort of thing.</p>

<h2 id="server-side-php"><a href="https://shkspr.mobi/blog/2020/12/coping-with-heic-in-the-browser/#server-side-php">Server Side - PHP</a></h2>

<p>I struggled to find any libraries which were easy to use. It turns out, good old <a href="https://www.php.net/manual/en/class.imagick.php"><code>imagick</code></a> has support in modern versions.</p>

<pre><code class="language-php">$imagick = new Imagick();
$imagick-&gt;readImage('image.heic');
$exifArray = $imagick-&gt;getImageProperties("exif:*");
var_dump($exifArray);
</code></pre>

<h2 id="use-a-cdn-to-convert-images"><a href="https://shkspr.mobi/blog/2020/12/coping-with-heic-in-the-browser/#use-a-cdn-to-convert-images">Use a CDN to convert images</a></h2>

<p>I use <a href="https://www.cloudimage.io/en/home?ref=terenceeden1f">Cloud Image</a> (Affiliate Link). Use it proxy your images. You can convert them to JPG or a  modern format like WebP. It can resize and other effects.</p>

<p>You can write something like:</p>

<pre><code class="language-html">&lt;img src="https://abc.cloudimg.io/v7/example.com/image.heic/?w=600"/&gt;
</code></pre>

<p>to serve your HEIC images in a more sensible format.</p>

<h2 id="what-next"><a href="https://shkspr.mobi/blog/2020/12/coping-with-heic-in-the-browser/#what-next">What next?</a></h2>

<p>HEIC is a weird, patent-encumbered format. It isn't particularly useful. If you want high-quality images for editing, you probably want to shoot in RAW.  If you're displaying on the web, WebP gets you a small file size and broad compatibility.</p>

<p>But, if you want to deal with HEIC, I hope the above was useful.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=37349&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/12/coping-with-heic-in-the-browser/feed/</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Three small tips for shrinking SVG images]]></title>
		<link>https://shkspr.mobi/blog/2020/11/three-small-tips-for-shrinking-svg-images/</link>
					<comments>https://shkspr.mobi/blog/2020/11/three-small-tips-for-shrinking-svg-images/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 24 Nov 2020 12:19:54 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[SuperTinyIcons]]></category>
		<category><![CDATA[svg]]></category>
		<category><![CDATA[tips]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=37269</guid>

					<description><![CDATA[I work on the SuperTinyIcons project. Our aim is to make pixel perfect SVG icons in under 1KB.  Because SVG can be quite verbose, every single redundant byte we can eliminate is a byte we can use in drawing.  Here are three quick tips for shaving a few bytes off an SVG.  Decimal Magic  SVG co-ordinates can have decimal precision, like: 123.456. But what about co-ordinates which are less than one? …]]></description>
										<content:encoded><![CDATA[<p>I work on the <a href="https://github.com/edent/SuperTinyIcons/">SuperTinyIcons project</a>. Our aim is to make pixel perfect SVG icons in <em>under</em> 1KB.  Because SVG can be quite verbose, every single redundant byte we can eliminate is a byte we can use in drawing.</p>

<p>Here are three quick tips for shaving a few bytes off an SVG.</p>

<h2 id="decimal-magic"><a href="https://shkspr.mobi/blog/2020/11/three-small-tips-for-shrinking-svg-images/#decimal-magic">Decimal Magic</a></h2>

<p>SVG co-ordinates can have decimal precision, like: <code>123.456</code>. But what about co-ordinates which are <em>less than</em> one? <code>0.123</code> can be rewritten as <code>.123</code> - we can drop the <code>0</code>!</p>

<p>These two <code>sed</code> commands will turn <code>0.</code> to <code>.</code> and <code>-0.</code> to <code>-.</code></p>

<pre><code class="language-bash">sed -i -z "s/ 0\./ \./g" *.svg
sed -i -z "s/\-0\./\-\./g" *.svg
</code></pre>

<h2 id="whats-my-new-line"><a href="https://shkspr.mobi/blog/2020/11/three-small-tips-for-shrinking-svg-images/#whats-my-new-line">What's my (new) line?</a></h2>

<p>For boring technical reasons to do with teletype printers, Windows machines use two characters to represent a newline. <code>CR</code> the Carriage Return send the print-head back to the start of the line, then <code>LF</code> is the Line Feed to move the paper by one line.</p>

<p>Unix just uses <code>LF</code>. Because no-one uses teletypes.</p>

<p>The brilliant <a href="http://dos2unix.sourceforge.net/">dos2unix</a> program will convert all Windows-style newlines to Unix style. Magic!</p>

<h2 id="last-line"><a href="https://shkspr.mobi/blog/2020/11/three-small-tips-for-shrinking-svg-images/#last-line">Last Line</a></h2>

<p>Most text editors add a newline to the end of any file you create. Why? Who knows.</p>

<p>Remove any trailing newlines from the file with:</p>

<pre><code class="language-bash">sed -i -z s/\\n$// *.svg
</code></pre>

<p>Using the above three commands, I've been able to shave off <em>dozens</em> of bytes from these files. A worthy endeavour, I'm sure you'll agree!</p>

<p>If you want to make images as small as humanly possible, <a href="https://github.com/edent/SuperTinyIcons/">come join us</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=37269&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/11/three-small-tips-for-shrinking-svg-images/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Some updates to SuperTinyIcons]]></title>
		<link>https://shkspr.mobi/blog/2020/05/some-updates-to-supertinyicons/</link>
					<comments>https://shkspr.mobi/blog/2020/05/some-updates-to-supertinyicons/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 27 May 2020 11:27:21 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[svg]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=35160</guid>

					<description><![CDATA[I love reading Changelogs - but I hate writing them. Here&#039;s what&#039;s changed with SuperTinyIcons since I launched it in 2017.  It&#039;s a project to create SVG logos of popular services in under 1KB. Maximum filesize is 1,023 bytes.  New Contributors!  What started off as just me noodling around, has now attracted over 60 contributors!  Some just drive-by and make a single change, others stay for a…]]></description>
										<content:encoded><![CDATA[<p>I love reading Changelogs - but I hate writing them. Here's what's changed with <a href="https://github.com/edent/SuperTinyIcons">SuperTinyIcons</a> since <a href="https://shkspr.mobi/blog/2017/11/super-tiny-website-logos-in-svg/">I launched it in 2017</a>.</p>

<p>It's a project to create SVG logos of popular services in <em>under</em> 1KB. Maximum filesize is 1,023 bytes.</p>

<h2 id="new-contributors"><a href="https://shkspr.mobi/blog/2020/05/some-updates-to-supertinyicons/#new-contributors">New Contributors!</a></h2>

<p>What started off as just me noodling around, has now attracted over 60 contributors!
<a href="https://github.com/edent/SuperTinyIcons/graphs/contributors"><img src="https://opencollective.com/SuperTinyIcons/contributors.svg?width=890&amp;button=false"></a>
Some just drive-by and make a single change, others stay for a while and contribute <em>loads</em>. Which is nice.</p>

<h2 id="new-icons"><a href="https://shkspr.mobi/blog/2020/05/some-updates-to-supertinyicons/#new-icons">New icons!</a></h2>

<p>The project started with 80 icons. Since then we've grown to over 240!</p>

<p>Some are hip new apps like TikTok (447 Bytes)
<img width="256" height="256" alt="The TikTok Logo." src="https://edent.github.io/SuperTinyIcons/images/svg/tiktok.svg"></p>

<p>Some are obscure programming logos like Cloujure (632 Bytes)
<img width="256" height="256" alt="Swirls." src="https://edent.github.io/SuperTinyIcons/images/svg/clojure.svg"></p>

<p>Some have nifty 3D depth effects like S3 (766 Bytes)
<img width="256" height="256" alt="Shaded blocks." src="https://edent.github.io/SuperTinyIcons/images/svg/amazon_s3.svg"></p>

<h2 id="new-name"><a href="https://shkspr.mobi/blog/2020/05/some-updates-to-supertinyicons/#new-name">New Name!</a></h2>

<p>It was originally Super Tiny <em>Social</em> Icons - but we've dropped the <del>"The"</del> "Social" to better reflect what it actually does.</p>

<h2 id="new-smallerising-tricks"><a href="https://shkspr.mobi/blog/2020/05/some-updates-to-supertinyicons/#new-smallerising-tricks">New Smallerising Tricks!</a></h2>

<p>I've learned so much from the contributors.  This MineCraft (891 Bytes) one uses Base64 encoded PNGs and transforms really well.
<img width="256" height="256" alt="A pixelated block." src="https://edent.github.io/SuperTinyIcons/images/svg/minecraft.svg"></p>

<p>This Raspberry Pi (1,010 Bytes) logo uses a similar mirroring trick.
<img width="256" height="256" alt="A raspberry." src="https://edent.github.io/SuperTinyIcons/images/svg/raspberry_pi.svg"></p>

<p>Both Firefox (1,023 Bytes) and Instagram (768 Bytes) use gradients for great effect.
<img width="256" height="256" alt="A fox circling the globe." src="https://edent.github.io/SuperTinyIcons/images/svg/firefox.svg"><img width="256" height="256" alt="A colourful camera." src="https://edent.github.io/SuperTinyIcons/images/svg/instagram.svg"></p>

<h2 id="new-packages"><a href="https://shkspr.mobi/blog/2020/05/some-updates-to-supertinyicons/#new-packages">New Packages!</a></h2>

<p>The icons are published as a <a href="https://www.npmjs.com/package/super-tiny-icons">Node Package</a> so you can incorporate it in your fancy JavaScript projects.</p>

<h2 id="join-in"><a href="https://shkspr.mobi/blog/2020/05/some-updates-to-supertinyicons/#join-in">Join In!</a></h2>

<p>If you'd like to suggest a new logo, or build one yourself, or tidy something up - <a href="https://github.com/edent/SuperTinyIcons">please get stuck in</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=35160&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/05/some-updates-to-supertinyicons/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How to fake Progressive WebP Images]]></title>
		<link>https://shkspr.mobi/blog/2020/04/how-to-fake-progressive-webp-images/</link>
					<comments>https://shkspr.mobi/blog/2020/04/how-to-fake-progressive-webp-images/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sun, 19 Apr 2020 11:21:18 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[Web Development]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=34710</guid>

					<description><![CDATA[WebP is the hip new image format on the scene. It offers unrivalled image compression at superior visual quality. But, in my opinion, it is deficient compared to JPG in one significant aspect. It doesn&#039;t have a progressive mode.  Progressive mode is useful because it can quickly load a low resolution preview of an image, and then gradually improve its quality.  WebP, by contrast, just loads up…]]></description>
										<content:encoded><![CDATA[<p>WebP is the <a href="https://developers.google.com/speed/webp">hip new image format</a> on the scene. It offers unrivalled image compression at superior visual quality. But, in my opinion, it is deficient compared to JPG in one significant aspect. It doesn't have a progressive mode.</p>

<p>Progressive mode is useful because it can quickly load a low resolution preview of an image, and then gradually improve its quality.</p>

<p>WebP, by contrast, just loads up the full image line by line. That's can be annoying on a slow connection.</p>

<p>What if we could change that? Here's a quick-and-dirty hack.
This is a 5472x3080 image which has been compressed down to "zero" quality on WebP and resized to 640x360. It is less than 5KB.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2020/04/pi-0-640.webp" alt="A fuzzy photo of a Raspberry Pi circuit board." width="640" height="360" class="aligncenter size-full wp-image-34734">

<p>The <a href="https://pixabay.com/photos/raspberry-pi-raspi-electronics-3640738/">original image</a> is 400 KB as a WebP and 1.6MB as a JPG.</p>

<p>There are <a href="https://jmperezperez.com/svg-placeholders/">lots</a> of <a href="https://developers.google.com/web/fundamentals/performance/lazy-loading-guidance/images-and-video">techniques</a> to <a href="https://css-tricks.com/the-blur-up-technique-for-loading-background-images/">load low-res images before the main image loads</a>.</p>

<p>We're going old-skool. Basic HTML + CSS.</p>

<pre><code class="language-html">&lt;img
    width=5472
    height=3080
    alt="Close up of a Raspberry Pi circuit board."
    style="background-image: url('Small.webp');"
    src=Big.webp
&gt;
</code></pre>

<p>This sets the <em>background</em> of the image to the low-resolution, low quality version. As the high-resolution image loads, it gradually replaces the image in the background.</p>

<p>There are a few more refinements we could make to this:</p>

<pre><code class="language-html">&lt;img
    width=5472
    height=3080
    alt="Close up of a Raspberry Pi circuit board."
    style="background-color: #0f0;
           background-image: url('Small.webp');"
    loading="lazy"
    src=Big.webp
/&gt;
</code></pre>

<p>This sets the <code>background-color</code> to the dominant colour of the image. That way, even before the background image has loaded, you get something to fill the gap. Because we've set <code>loading="lazy"</code> the massive image won't be downloaded until the <code>img</code> scrolls into view.</p>

<p>We can even go a step further.  Let's reduce the image down to a thumbnail of 160x90. That takes us down to a ludicrously small 564 Bytes.</p>

<p><img src="https://shkspr.mobi/blog/wp-content/uploads/2020/04/pi-0-160.webp" alt="Extremely fuzzy photo." width="160" height="90" class="aligncenter size-full wp-image-34732">
Which makes it small enough to stick directly in the HTML once we encode it in Base64:</p>

<pre><code class="language-css">background-image: url("data:image/webp;base64,UklGRiwCAABXRUJQVlA4ICACAACQEwCdASqgAFoAP/3+/3+/vLYyPv+8A/A/iWYIkCfrS2sOTiSUArLU15JWpmwHGTJDQ+i/y0UfRMWET8I422NGGsABPAdIKWnTFvlfPnla/wC0DPVYABJxuECkmqWUZwViSm1vqzvPgAnG+vioXrwz0V3Zx+c/znFFJvKBpH5SceJwmAUi8+8SRjzQvyc/qv3DKe3KfEYnXA+5aEBypmacRUvrvgAA+OUzEDYgEioYgJQRm/l9OIIl60M80PJW00cW6fX1fNpB/L4udWsUF5v6gOR6fB//5/0zuirXi2Z2GoqpVh3aeUDEdVThFtQOZStD/ulvCFO54uEqPVZlD63ukgBgt5Q5KA15Nse9lu4E+4XliSgao9azVod9zUr/XELtUpd2CLSyImxIXq3rRNGthLv0jePmYvlqijrhFxgMsdVer/GmM0C6xEyTC53yBQ+aGJlg/iqxrU5uwNjGNi3Or75QpJVdWW0lEyZlOsIiRsCZ+jTXsDMmgzkB4uaiiQASLl4TIYpK587PmaLb29WRF3hxpAtjR4TPDHne3iY6aBfYZhvMo1N41AMMKe7BLZg3w8LCQ2RHRHnkhgYsdtLL2jSFFpP8JgVtwLZ/KtKa6P7VaHm7aY7aT0UWyEwXPnUbZwo5a4yuK1H+P7YJqLj8yjuKSJZACY6z+6RgRxeoSyytYvQiopOOlc4f1Mdoy2WgfE3HR6Ap5jJiPryYLQAA")
</code></pre>

<p>Of course, you don't have to go down to quite this extreme level - choose some settings which make sense for you and your media.</p>

<p>To summarise:</p>

<ol>
<li>Scale the image down</li>
<li>Reduce its quality</li>
<li>Set it as the background to the <code>img</code> element</li>
</ol>

<h2 id="endnote"><a href="https://shkspr.mobi/blog/2020/04/how-to-fake-progressive-webp-images/#endnote">Endnote</a></h2>

<p>I wasn't involved with the development of WebP - but it seems bizarre to me that it doesn't contain a "thumbnail mode". On that ½ MB photo, adding a couple of KB doesn't seem like a huge overhead.</p>

<p>Similarly, the <a href="https://netflixtechblog.com/avif-for-next-generation-image-coding-b1d75675fe4">experimental AVIF</a> also lacks progressive / thumbnail support.</p>

<p>Anyone know what the reason is?</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=34710&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/04/how-to-fake-progressive-webp-images/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Should panoramic images be part of the HTML5 specification?]]></title>
		<link>https://shkspr.mobi/blog/2020/03/should-panoramic-images-be-part-of-the-html5-specification/</link>
					<comments>https://shkspr.mobi/blog/2020/03/should-panoramic-images-be-part-of-the-html5-specification/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 09 Mar 2020 12:23:26 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=34279</guid>

					<description><![CDATA[Noodling thoughts.  The humble &#60;img&#62; element is one of the oldest parts of HTML. It allows you to put a static image in a document. Later revisions allowed for animated images - like GIFs. And the &#60;map&#62; element made parts of the image clickable.  But what about interactive images?  Like panoramas and photospeheres?  Here&#039;s a 360° image. You can drag it to see all around.    That uses the …]]></description>
										<content:encoded><![CDATA[<p>Noodling thoughts.  The humble <code>&lt;img&gt;</code> element is one of the oldest parts of HTML. It allows you to put a static image in a document. Later revisions allowed for animated images - like GIFs. And the <code>&lt;map&gt;</code> element made parts of the image clickable.</p>

<p>But what about interactive images?  Like panoramas and photospeheres?</p>

<p>Here's a 360° image. You can drag it to see all around.</p>

<iframe style="border-style:none;" width="1024" height="400" allowfullscreen="" src="https://shkspr.mobi/pannellum/pannellum.htm#panorama=/blog/wp-content/uploads/2019/11/20190912_194621.jpg&amp;autoRotate=2&amp;autoLoad=false&amp;title=Interior"></iframe>

<p>That uses the fantastic <a href="https://pannellum.org/">Pannellum JavaScript Library</a>. At the moment, there's no native way to represent that in HTML. If you use an <code>&lt;img&gt;</code> you'll get a flat, equirectangular image like this:
<img src="https://shkspr.mobi/blog/wp-content/uploads/2019/11/20190912_194621.jpg" alt="360 view of the inside of the concert hall." width="5660" height="2830" class="aligncenter size-full wp-image-32852"></p>

<p>Here's two possible ways I've just thought of...</p>

<p>(These are just sketches of ideas - think of them as a starting point for user research, rather than a completed product.)</p>

<h2 id="extend-to-be-like"><a href="https://shkspr.mobi/blog/2020/03/should-panoramic-images-be-part-of-the-html5-specification/#extend-to-be-like">Extend <code>&lt;img&gt;</code> to be like <code>&lt;video&gt;</code></a></h2>

<p>An HTML5 video element looks something like this:</p>

<pre><code class="language-html">&amp;lt;video controls=false autoplay=true&amp;gt;
</code></pre>

<p>That tells the browser to start playing the video, but not to show any playback controls in the UI. Panoramic images could use something like:</p>

<pre><code class="language-html">&amp;lt;img panorama=true photosphere=false xdegress=270 src=&amp;quot;...&amp;quot;&amp;gt;
</code></pre>

<p>That is, this image is a panorama - but not a sphere - with 270 degrees of movement on the horizontal axis.</p>

<p>Or</p>

<pre><code class="language-html">&amp;lt;img panorama=true photosphere=true startx=120 starty=330 src=&amp;quot;...&amp;quot;&amp;gt;
</code></pre>

<p>Display a photosphere, make the initial view start at the following co-ordinates.</p>

<h2 id="use"><a href="https://shkspr.mobi/blog/2020/03/should-panoramic-images-be-part-of-the-html5-specification/#use">Use <code>&lt;picture&gt;</code></a></h2>

<p>As I've said before, <a href="https://shkspr.mobi/blog/2015/11/a-polite-way-to-say-ridiculously-complicated/">I'm no fan of the <code>&lt;picture&gt;</code> element</a>. I think it is inconsistently designed compared to other parts of HTML5.</p>

<p>Perhaps we could use it like this:</p>

<pre><code class="language-html">&amp;lt;picture&amp;gt;
  &amp;lt;source type=&amp;quot;image/jpeg;panorama=true&amp;quot; srcset=&amp;quot;pano.jpg&amp;quot;&amp;gt;
  &amp;lt;img src=&amp;quot;flat.png&amp;quot; alt=&amp;quot;your browser doesn&amp;#039;t support panoramics&amp;quot;&amp;gt;
&amp;lt;/picture&amp;gt;
</code></pre>

<p>That gives the MIME type of the image an extra parameter. Obviously, you'd need to put in other configuration options something.</p>

<h2 id="what-next"><a href="https://shkspr.mobi/blog/2020/03/should-panoramic-images-be-part-of-the-html5-specification/#what-next">What next?</a></h2>

<p>A quick search didn't show anyone working on this as a proposal. That normally means either I'm not looking in the right places, or no one else is interested.</p>

<p>If you think this could be developed into a future standard, please let me know!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=34279&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2020/03/should-panoramic-images-be-part-of-the-html5-specification/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Annoyed by Android's circular icons? Here's how to fix them]]></title>
		<link>https://shkspr.mobi/blog/2018/11/annoyed-by-androids-circular-icons-heres-how-to-fix-them/</link>
					<comments>https://shkspr.mobi/blog/2018/11/annoyed-by-androids-circular-icons-heres-how-to-fix-them/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 13 Nov 2018 12:23:07 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[webp]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=30686</guid>

					<description><![CDATA[One of Android&#039;s mottos is &#34;Be Together; Not The Same&#34;.  What does that mean to you?  To me, it means that you don&#039;t need to conform to a single way of doing things. Sadly, Google seems to be moving far away from that ideal. The latest change - adaptive icons.  All &#34;adaptive icons&#34; means is that every unique icon has to be constrained in a circle. It makes every icon look monotonous and, in some…]]></description>
										<content:encoded><![CDATA[<p>One of Android's mottos is "Be Together; Not The Same".  What does that mean to you?  To me, it means that you don't need to conform to a single way of doing things. Sadly, Google seems to be moving far away from that ideal. The latest change - <a href="https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive">adaptive icons</a>.</p>

<p>All "adaptive icons" means is that every unique icon has to be constrained in a circle. It makes every icon look monotonous and, in some cases, shrinks the icon so that they're hard to see even on large screens.</p>

<p>There's a cognitive element here. When I look at my screen for an icon, I tend to use colour and shape to find what I'm looking for. With every icon now a circle, and half of them trapped in a white background, it makes looking for the right icon harder.</p>

<h2 id="boring"><a href="https://shkspr.mobi/blog/2018/11/annoyed-by-androids-circular-icons-heres-how-to-fix-them/#boring">Boring!</a></h2>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/11/Circular-icons-fs8.png" alt="Each icon is constrained in a circle." width="540" height="322" class="aligncenter size-full wp-image-30690">

<h2 id="better"><a href="https://shkspr.mobi/blog/2018/11/annoyed-by-androids-circular-icons-heres-how-to-fix-them/#better">Better!</a></h2>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/11/Unique-icons-fs8.png" alt="Each icon has a unique shape." width="540" height="322" class="aligncenter size-full wp-image-30689">

<h3 id="aesthetics"><a href="https://shkspr.mobi/blog/2018/11/annoyed-by-androids-circular-icons-heres-how-to-fix-them/#aesthetics">Æsthetics</a></h3>

<p>This is the way I <em>personally</em> prefer my icons. I don't care that they're not a uniform shape. I don't care that some of them have a lower centre of gravity than others. I don't care that the corner radius is different on each one. I don't care that they don't all line up perfectly like <a href="https://www.youtube.com/watch?v=r5IKpHTEuY0">ticky-tacky little boxes</a>.</p>

<p>I want them not to be the same.</p>

<h2 id="getting-the-icons"><a href="https://shkspr.mobi/blog/2018/11/annoyed-by-androids-circular-icons-heres-how-to-fix-them/#getting-the-icons">Getting the icons</a></h2>

<p>Here's how to fix it.</p>

<p>This is the Gmail adaptive icon - tiny and indistinct.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/11/Gmail-circular-adaptive-icon-fs8.png" alt="A small Gmail icon trapped in a white circle." width="100" height="101" class="aligncenter size-full wp-image-30691">

<p>The Gmail app lives at:
<a href="https://play.google.com/store/apps/details?id=com.google.android.gm"><code>https://play.google.com/store/apps/details?id=com.google.android.gm</code></a></p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/11/Gmail-–-Apps-on-Google-Play-fs8.png" alt="A big icon displayed on a product page." width="945" height="473" class="aligncenter size-full wp-image-30688">

<p>Inspecting the source code shows the nice large icon lives at: 
<a href="https://lh3.ggpht.com/8-N_qLXgV-eNDQINqTR-Pzu5Y8DuH0Xjz53zoWq_IcBNpcxDL_gK4uS_MvXH00yN6nd4=s180"><code>https://lh3.ggpht.com/8-N_qLXgV-eNDQINqTR-Pzu5Y8DuH0Xjz53zoWq_IcBNpcxDL_gK4uS_MvXH00yN6nd4=s180</code></a></p>

<img src="https://lh3.ggpht.com/8-N_qLXgV-eNDQINqTR-Pzu5Y8DuH0Xjz53zoWq_IcBNpcxDL_gK4uS_MvXH00yN6nd4=s180" alt="Gmail icon.">

<p>Removing the <code>=s180</code> from the end of the URl gives us the full 512x512 image.  That's suitable for use as an alternative icon.</p>

<p>OK, but how do we get the icon from the Play Store URl?  Google intentionally make this difficult. You'd think that it would be <code>&lt;div id="icon"&gt;&lt;img id="icon-small" ...&gt;</code> or something. Nope!</p>

<p>Here's what the source looks like:</p>

<p><img src="https://shkspr.mobi/blog/wp-content/uploads/2018/11/Google-Play-HTML-source-code-fs8.png" alt="Google Play HTML source code. It is an ugly mess of random gibberish." width="1071" height="442" class="aligncenter size-full wp-image-30687">
What the flippity-flack is going on there?  Purposefully uglified code designed to obfuscate and frustrate?</p>

<p>At the moment, it looks like all icon images have <code>class="T75of ujDFqe"</code> - but I wouldn't want to bet on that being stable.</p>

<p>There's no official API for Google Play - but there are unofficial paid-for APIs and some <a href="https://github.com/NeroBurner/googleplay-api">open source</a> <a href="https://github.com/facundoolano/google-play-scraper">scrapers</a> of varying usefulness.</p>

<p>I ended up using <a href="https://github.com/danieliu/play-scraper">Daniel Liu's Python Play Store Scraper</a>.</p>

<p>This quick scrap of code take's an app's package name, downloads the large size icon, compresses it using <a href="https://developers.google.com/speed/webp/">WebP</a>, and saves it.</p>

<pre><code class="language-python">import play_scraper
import requests
from PIL import Image
import webp

packageName = "com.android.chrome"
icon = Image.open(requests.get(play_scraper.details(packageName)["icon"], stream = True).raw)

# Save as png
icon.save(packageName + ".png", optimize=True)

#Save as WebP
webp.save_image(icon, packageName + '.webp', lossless=True)
</code></pre>

<h2 id="setting-the-icon"><a href="https://shkspr.mobi/blog/2018/11/annoyed-by-androids-circular-icons-heres-how-to-fix-them/#setting-the-icon">Setting the icon</a></h2>

<p>Most modern Android homescreens allow you to manually set the icons of each app.  Long press on an app, then choose edit, then select the icon you want. Easy! (ish)</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/11/homescreen-full-of-unique-icons-fs8.png" alt="homescreen full of unique icons." width="540" height="914" class="aligncenter size-full wp-image-30703">

<h2 id="if-i-was-clever"><a href="https://shkspr.mobi/blog/2018/11/annoyed-by-androids-circular-icons-heres-how-to-fix-them/#if-i-was-clever">If I Was Clever</a></h2>

<p>If I had the skill, I'd create an Android app which looked at the app name, downloaded the icon from the play store, and used that as the launcher icon.</p>

<p>Or, I'd fork an <a href="https://github.com/dkanada/frost">existing</a> <a href="https://github.com/varlesh/theia-icon-theme">icon</a> <a href="https://github.com/materialos/android-icon-pack">pack</a> and manually add the top 500 apps.</p>

<p>But I'm not that good at Android apps. If anyone else wants to make it, please do so!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=30686&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2018/11/annoyed-by-androids-circular-icons-heres-how-to-fix-them/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[How to avoid JPG compression on Twitter]]></title>
		<link>https://shkspr.mobi/blog/2018/03/how-to-avoid-jpg-compression-on-twitter/</link>
					<comments>https://shkspr.mobi/blog/2018/03/how-to-avoid-jpg-compression-on-twitter/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 26 Mar 2018 11:30:24 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=29208</guid>

					<description><![CDATA[Update for 2019! Twitter have changed how they compress images. Some of the techniques in this blog post may be out of date.  Let&#039;s talk image compression! Services like Twitter will often apply aggressive levels of compression in order to reduce their storage space and decrease download times. This can have negative consequences for usability and image quality.  Here&#039;s an example - this detail…]]></description>
										<content:encoded><![CDATA[<p><ins datetime="2019-03-02T19:01:08+00:00">Update for 2019! <a href="https://twittercommunity.com/t/upcoming-changes-to-png-image-support/118695">Twitter have changed how they compress images</a>. Some of the techniques in this blog post may be out of date.</ins></p>

<p>Let's talk image compression! Services like Twitter will often apply aggressive levels of compression in order to reduce their storage space and decrease download times. This can have negative consequences for usability and image quality.</p>

<p>Here's an example - this detail of a logo from my former employers, Vodafone. Solid red - with some fine detail in white:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/03/Pristine-Vodafone-Logo.png" alt="The Vodafone logo with the text &quot;The future is exciting. Ready?&quot;" width="248" height="248" class="aligncenter size-full wp-image-29209">

<p>If you upload it to Twitter, it will automatically be compressed to a low quality JPG. And this is what it looks like...</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/03/Compressed-Logo.jpeg" alt="The logo has been compressed. It looks disfigured." width="248" height="248" class="aligncenter size-full wp-image-29210">

<p>Yuck! Look at the grimy artefacts surrounding the text! By default, the image quality that most websites choose is 85%. That's not sufficient for images like this.</p>

<h2 id="how-to-fix-it"><a href="https://shkspr.mobi/blog/2018/03/how-to-avoid-jpg-compression-on-twitter/#how-to-fix-it">How To Fix It</a></h2>

<p>PNGs have an interesting property that JPG images don't - they can be transparent. When Twitter sees even a single transparent pixel, it refuses to convert the original image and keeps it as a PNG.</p>

<p>Using GIMP - or any other photo editing tool - you can crop out a pixel from the image:</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/03/Detail-transparency.png" alt="Screenshot of a graphics editor. One pixel has been removed from the image." width="305" height="302" class="aligncenter size-full wp-image-29211">

<p>You can see a demonstration at:</p>

<blockquote class="social-embed" id="social-embed-969907247026442240" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">JPEG compression is terrible for solid blocks of colour (especially red) next to fine details. By default, Twitter compresses your PNGs to JPG. The only way to avoid it is to make sure at least one pixel is transparent. See alt text for details. <a href="https://twitter.com/edent/status/969907247026442240/photo/1">pic.x.com/skavjdelt6</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/DXXM8k3WAAAu0LU.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="A JPG showing compression artefacts" src="data:image/webp;base64,UklGRrAUAABXRUJQVlA4IKQUAABQXQCdASr4APgAPrVWpkynJSOiJ1T6WOAWiWRu3V68p7+n7a7c3of77+4fs5WP/KcBVYvlK86/9f+9f2/3of7X9ZfeH5h/6sfrz/jvRA973mL/ar9s/c5/3/7Le9b0E/6b/ruuD9ETzav+97SX7hemfqmnnrsu/0vib5mPk8s/wb1NfmX4Z/h+wn+U78+AQ6/tCPb/7F5q/3nmp4gHB6UB/KN/4PL+z1I5woUm2ajFEKU+n4o8jnt92kXxVKXWSXijXxuT2/EP/zUYJ9UGMVUjnNRV9lbYjn8nLLkuhz6T/yl6ayHePxiepOVl8CvyZkPIHYugHMi1fzECZiI4h88NCNM4OyG876odmTGhXgIi9p9MP8mcZNw7P9aXBMqRDihrvd3fKXC+Z+YFK0fNTKWa6/g8+awZ9DW+4dEMiq5YiEvSijLc8S2N7xuRSoYNkQB7Xr0mXWC8TDGwnpaTI2TP3cshx/bnlYSgVheRhu5CSlC2Eg42fiEO/v1fgf00h11NU03yTQysFKv6c+5Ge72tVrLUCdUtmIU86lyAUlKkYhG+I3lNO7H4u8p/NGQXeKeK8YD/1fMgwDT2Bpd/8D58wxR6xfdSJ4ITntp4u7deykLXTSGIXmr9Zh9fIMPmLZp24GnhZQ97OGoWSyghqFp8Ozhe6ro5tXvfj1cP+lR1awA2R+2JKMtkPfTKU9JrE5u5Vn61dQsOX2l0VAGq11hCumwBwzYmU2E6I9l382Pq3KpN75fSqyHrFo6aGJHLcYzUYygu+h+t0JU6xmv8q+7TTBN2XhNp319mG3bEKs2spI4VhvdFJyV/DsnIosLpZZOGKc4mfOc+Yg6qnx/4h7dHXxHpxQFJycAwEe5tEhqCosCeFa7NaXMre1/f/ki5e2X7W0N6JBaVo+ruGF4aLx5HxsQioRstiGe5WWlHGaThTEqIiwXK0D/jKRbbF/xgj1jnt92keSKPZ81r8/XzQLFbUb7tI8jnuEP2dfwGqCAH/HPWgAD+71H+cJmZIGNf9f0/0i/+kX+7w3sofnPri1Ohwlngv1rzI0iaTAzH/wmiOCdM5Ah7dTb0Tvg1h7Gu2tGSxcbKSzv+eX8FpOW4wIxYdgrB8if+bkh6Y7GNktKSJoZhFdI0F6rJH0yVaUcclsPmmYiCWqURCBDgtzr1rfMGBUoSPYqQJZJk4HnL0Vawbvdi0z9THjrfMCbIM8LnXNL53V3jFMBrVEEDPLkF/PFP9GXFpuy4gF9wA/UKuUSaZqYckflOjV1OLuvdolRcUyg2rGOcwDF2lPX5CQ1oARTs3cf4j3cSj4vmkiqOUWnGrvwyU38++JZV4e96laYEY/EUZZIVXKhEsasL5RLu0kvXhrWDk0QEdsiUBQOD3Re3wB0yzprYxL31/dh5xhu6W8ep3pWn0nitLo5iQVnHd0kdx36vy+wlR1fLy5bsKTgh0Ag86FPnAL6891L/79tXCLdqf93IUQkXfumk+/OVctXYOWXcWIgJesJBH7NX5KsGXvdgkP4gQxZT/yJ4AbyeQfVR8j8J6aVDFei/SgwBAmqM7FyBHZvP9i9ZbmylDwtlaWTaN+2LiKa3clBkRPdOk7fvXKQY/q688PQ9sXdeCrJeZgijBmlzMIP6sfnm8nVeRvRdfekquHc5I3jDKXGoz3WiXzG/Rq06luCLXblwyseNmVHrq5iLwzQY8lnDibqlReMeBXvbmjS0vY/qCbnwhFlh6kGqFlaNll82qiLK8AJbyWoYZbJEseM1sfl9C2eiDNc3V/49Ys5cb80fvCsKXw0UY0XD+Fm2MogruT6vS4hy441Cof3JpNcapL29eqzQCfNmAbx2Pd8Fk+z0jDm64LN7ZIbY3GPARv8wtonf41KYHOIk1Llpe9YbGw/km0L1Tk/OdlYfJrv4mO8MZfTnf/I40KMXaqEJDRdkLBr9tXZ5i/a+1yxqm1+oLZB3CwJr65EJaHSToHHXi9upbR9/8IfCQuo42YHDHadQ7zA1xKm3cVvVj57kjkTgGnUggKjfnRDkWn/fpvl3I+q4n+r+L2IkN9gFfdgeirGgNn8kfUVVk6okBAa7wAWZSWwdIFFNtyAh7CWbPN6joNq/C0t++2Ut2gCowLNYg1dkm0ngWIc9PBT/psxvgRmFa1hJ1BzlI35VU4+JKWJkjUwBxk+n1p4eDZx9cI9pNO1rupI4wjhLCMEmibh+avRBUWzHmAVjuK24Um/imeO+d9SUvevPoQTz11KwVgCLm1HGwaiRnawCtfWIIqvPkCamTrbR7n3WYWp+xUjk4L5x8c4dEw34GBwwwXcJgpeBKJYK1Otl5ga6rNdLFCHZAVcVPgKXN0zqOnwTpyjgXR4c/2GN5BKRuSzab9fSF3ZClPh1VIp91u9er2/8k0wNxYL3h9nl6x2fz8A4CQlQmOX5NFXB6R7X4xKsx8M/iMBWbGC8XPDXfZ1nGSpeq5kaOMBKZcavMsX8mzO1IrDnzKE0+KFelKnMFQaNkBqU9YDD9fE3FfxVOcCo8215R+CLBEHQPeGySQfhi8GeQtIf/94EpYoOSMlScEwN/nIJlU1zClD87aoEnrv75xHAx5u7sg0Ut4UZA4FlUw5DJXTjHX27tvWAIDMF3oJ9GzuDC8ba7Z5Yp5IbpEMfJhFz0QfmBHXXPwhrzwDMF/2k1LBdKzOSUE0uiQKcwwIiSElIRc3ifKMWW4vWXX5UXz8g+pEf/EFWE+FnlUi1exrbCvcR3McerfVLy6HjmMrz3FhHOrAY+MGXRZkf2uuxTxa4ei4z3k4lVeAhlr/tF0fj5BKy6JTxQktzXo8io7rBbeK7KCfQaXmHiE2JoVUQuW58yJ0F/lfvLZUZNu679oJZVUJbEG3lPUeQDB0nc35J5LFQBCcb3OYMatElQl8PYXC/x9eJMvBn5l/Q9smU00kA3Uwll5w8he9L8YbyhiUGXtruLixJqzToWyFzhHhLNtxYweePnlb5r+1l9pX/IQxiGPhzKRXKAkQh3+VtSkWXFf4G+ELFCiR/qWVt55ygxFsmzm7X6PG7Ese5HUCdn88pO88SW4iyHqnGsYVBitekSmfFh4K8TWNjTILMfvvHFe5fpI5mDr3Y4lzzil2D/qFW2RK9GniQ/L4siYZXMV5tle3G0o/v5UduQtuq2JqQCZnEj6PpauPNu1TLBN6+CgjeqNRxo6buhIqdqg8jT3+hp114ZNMR9nRuwL9+83lvxKNT8wA95c2yqjilgyb+8Esp2fIf/bAj7V0pj60QtXbcbtpxhl0CaqlYQvYHYrvedPaPO/NwRiu/hlXx9bd4j8qbI7aJ+ym54fSAWfW1iyfsEm/2MfJcO+a1bPtCcnM+GPLeJFVp+p0D2WHDMxlGgqHuA9t2ZOlGPVJIsl50Cn4RzfKvjrXfMSH0XTgNPqByBLRZluxRJaIqovfpAUhryYt2yKWvPIq8u0qkHS4PtuBW71e57dSlCRpDojFACKq3a0gRDz1V93tKO+JaXsknKgK8/RZ9QKrf5xOhQYETw+EzItIroaQi9D/VAUEKlmU43alsRKAy9jaWwigz8spTAgCGBCjWfBaCWBC9+bj/Bzf+yeOM9tBG5g24imfDp6d8CYXiMJkfGocU/F15yG7RnGZWg8auik/PJtneVaEltzi/JJGcj6yWmf+b+E4AW2wfec7FJJ2b7AHU6NvMjaV8PlDYndyeLQ26cGsMC7FDH3Y38oHhdQuZg9HD0TVqClTrxLB2ffBTsiHKL6nAhEnWiWvSnnQO+SVIvLeDSCCG000ia0MyCQqLWgkYpKB3P42xg/SAsUdWtKyPjifTjQF+87adh6y6J55k6uHlh8JAbVgRWcGzOjvUx0mZXN2LpmtAd7brPrWk5cyvpOlorObX/rs6cjJoHKd/JvqwL6sDXgbxjfNSvHldjkHZK4bHdzrm9cbUZjEzFND/t8z8BQRuoPxvTMEkBwpZ1PNDvSTx8oy14qSlavkF5P4z6e1dtoHs9aucVdYyMIrnoiZCi/wQifX8reg6PyUkP/c77l8lv9td/MnMBjQaO4bQn1Dx4P2bskQDLqeYkOfdZlTHSaDP1x49T7/ayM7fLcALX7mMK3xWKOxCm1wWGvz/aMCSF7/5Q3aWIUAEKd8sfQXAM1VsSt3gD5Y7nU4a5qua92GA8hVfB1Vi5JZOp4E2Y+Ju5cy7YtZIJT7VQ7ORgPdz3UTvD/PXzpqKXCOe0wWAR8KIAkCvwuW/6Er0xDuLYiRqkQWhFlCTivI4DHmYdGprrZ/BULy99w4BK2AKgA1LryFPGPzK7Peu2V6LD67CyPfUiihA4uftReVIG3DTvT15sqBrwKkiiiXbvwJSAQ2OTl1XcIzVCPpmkFXGQHAve+6HbtilXQbC3okGto2J/y1PyW6iOt2FE79PjggzTzTw8i5B4BqnKziEvKucZ8RabJADZ4EQF7zoMKBMC71bqMIK8laDHiYrZYkDdpM72+0G5hYqTt2N/iTGARbt/vDoISI5pZa1W8y9WZmC6EWW0dcFLe0nZvd9gSWpjkBzaG3c4F4G5ON2FewQsF/Ig24OapI8ntCBwNZNmQo35urUiq9hEe1xE3z8K/UfaqzqUY1DNj5upoOTxjEKmC87nNltgSxEGecu37viOkAzCizq50qfnZ1A9aNKBgIU2m0NKmwyQ5TEvVFA2dtFJC9lpKTry8rV3qq+/CClgaXweOw3CMhNdgb2q3WuvFXRlTqwrY1mU/HIR7P2c5aKrIRYmb51Hl3kw151njjCKbwgR8kBJiuiQifwcMGWQe1JedFq64zsFh8NkO11YTesNx4EZTE472jukPogpxVHbyTJSmQSkxyf+qf8RIxluBMZWEMdXT5SGgFwVsvUMqG36QtSbTFzY4ExYam9NvZ7OS0vOcUEOTM2UywL/OZHRqYPXZ+ec9cDjuoaimscct1nlATXI/dgcIjQYHhvMMlat8u5St9Wk7w/MNZsy0u49cZ8SZOKTvpXQk+AjMqE4H5Fqxg9U8/RF6Me5QqUrrFxcLlwR7LE3o351o+C7R8G/uqLlaiqqgzjD3/slRX6j1U/5AyRUTDU/fltFjkcJe54MxPS5sOl6ZvEwlgtoo3zLXixjNk4v1ONkoW9DMZlKzHuVNmQyloAQwcMMpBDIilQJ2g/d8YBQNO8svJzfvq0JzJrX+6Uv0MH9Ds3kPrNkXMXxfuC6K9vNCXWabbfzyVYEFyTXx3ydm0Wjj1rY8gHQsZZ11dYaRbkG8Mmmqmo2urNfn7J+1Z4OgG/gGDuVLQSVvVoMisHueMoahsw1ZAmgfvXfEz7OFEZk1w7L5kcJ4tED8BOdDUnD5quLOl288c4TflfL0ywDtBkXlM/is88Pb1S+yUeZc40Z20HMZ2vlU1VD492N090uUngwn1m0z3ljCpKTJHQIYq8Rw+6wQkh1+gVu9QQFVUa4hHZeW8YH5rzbRmUd8+5afEpFkPo3A+JUXBUCbvLPReaa2UGSYBViVa51UTRkJJqVbJg45sdZgqtJ10LeMj9tr9UqUVM8fv7lMpal/kGOVcGgf8J53CY67LFmuZifytdVY2SA9o2AZaA/9I7mffNtlFvz8/LeSQORpWrOS4VebMd//09fQreaeB0NEvqGIeeAVy+9T4Mbt41KZvwyIJ9jdTCceO+A8EbDam8/Z41bnk6AOJmwi8vGmO2lUXQqCpQK2Y90EkN6fY90QoMGmAKx14f48n/S32goOniuatHhuBU+JnIH0lrWFSKzvn2hFK8Y6RGLtyqpPaksMpWL1xDOkEYfX2c5QrnmAPZF1ruFN5r+czNdve6adt9+Kb7lfZa6XtBehdz6punm6hwAaSodP2wpJCkcDNRNxHaRpVaK/Tg/2HudmEhn2h0MdShgq1YwTnsxonk4IXbUn+0bF5z+8Z34bQNPUlXj5EKJysMIYcQvduLmFacKg0/9Q4XvG7+tMfO+dkqxgVYXuu5/GmiP1UyxoR6EkRgWusAaPcjOdOGk+sKBPXGGH9dPKKzNSEovRxjRTjFzi+nmwnZvephF7jVflsjFVdKp4nif1o7OWhDzDB34p0dQYGspQuSUZvfVfydD5KPA99Pye/7BLkfuOZEGDe7GCG+pGXQaijawAMVqMlXiGWwsuL5ygSl9KA4zym1bbYAx/OtEuvZekgpp4FRKA79pOhR0gtdVfa0jGh+39b74Am+v9WyakKfKQgXhP+y22rCq0U6gJrDqbO968B76xaacxTCUbIVRZzWU13/zSI6iDGJzSt+RDDC3PlrrB/SgHkMLKP/4vIxajvxMGb1jXFIskqoDfJWxsnBPR32W7TYjuPM3VZ7rS+HygSVH7vDpA7PvE9f/0faD8U24C/uBEt2y2OB7Xuab1oth6mMJ+ZinRfhg/czBQkMiKb0InV5yPEyfdiy2sY3g0Kta05UnKlHBGKxjNljyt/heHKSCYWCmOjCMjE9qITN5Yi+DEkzvuK8U8GugjZ2l2+L/LD9UB/+o/nnY7U9VMH3SsVDjpJJJCNIHUMvMa19MTbVX31GileAP+iTp2REVTArydt1MVSVL2s0V63uXy6jfbKGUw8XRiD6kFNokrD9DhaakStjwHQs+pyZeCM7F+YtoYrtbvjAw6XMstXeOd99eEJ6YllPBDpyw2CA5oDyCFo3ZuJG6Hw24ALmmgUPO2+toADSw67AZwbjobsdJ8IqFqLjvGhIASV5H0OWFvdMK6KlnGh8SLF4Hb9g1S7Y6vQlRjE4iOvpfg0zpuZWFY4xFZeC99lwPMBsEKoyVqr/kQid3WaCPRUFzueCOgABSAIpdK3XrxzrkPd6SNZAPmktI7HETlQ6NQyhyZAPktgrSEeRSikirUpHi338ppW873W506NlTWSoLbsVc1ZAAADtWAcFUlXJPPv6aWmONmk3M6eRsXpU6MMQeVu6gj6XoCBwjAk+N2Jz3exwpB1NZwsZqO5Nn2fbCbQ+lRIJmePugABvxolGykPBJPlJBbS5wjGHJONlnRvPXUVaIeyFU18vD3gc7YImqNfHJG3ciRAsJPECW6VWXa7FAAAA"></a><a href="https://pbs.twimg.com/media/DXXNFRhWsAASKL8.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="This was originally a PNG - notice how Twitter compresses it." src="data:image/webp;base64,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"></a><a href="https://pbs.twimg.com/media/DXXNNgiXkAAZuxb.png" class="social-embed-media-link"><img class="social-embed-media" alt="This is the original PNG. A single pixel is transparent - so Twitter does not compress it to JPG." src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/969907247026442240"><span aria-label="87 likes" class="social-embed-meta">❤️ 87</span><span aria-label="9 replies" class="social-embed-meta">💬 9</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2018-03-03T12:08:02.000Z" itemprop="datePublished">12:08 - Sat 03 March 2018</time></a></footer></blockquote>

<p>If you can't bear to have a "missing" pixel - <a href="https://twitter.com/Marcus_Noble_/status/969908207975092224">you can set a single pixel's opacity to 90%</a>. That will also prevent compression.</p>

<h2 id="does-this-only-work-on-twitter"><a href="https://shkspr.mobi/blog/2018/03/how-to-avoid-jpg-compression-on-twitter/#does-this-only-work-on-twitter">Does this only work on Twitter?</a></h2>

<p>Sadly, yes.</p>

<p>LinkedIn displays an 85% quality JPG in the preview.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/03/LinkedIn.png" alt="Screenshot of the LinkedIn page" width="560" height="529" class="aligncenter size-full wp-image-29212">

<p>They will let you see the original PNG once you click through.</p>

<p>In my experiments, Facebook compressed the transparent PNG to a <strong>71% quality</strong> JPG.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2018/03/Facebook.jpeg" alt="A heavily compressed image" width="248" height="248" class="aligncenter size-full wp-image-29213">

<p>That looks nasty! There appears to be no way to download the original.</p>

<h2 id="redecentralise"><a href="https://shkspr.mobi/blog/2018/03/how-to-avoid-jpg-compression-on-twitter/#redecentralise">ReDeCentralise</a></h2>

<p>One of the advantages of hosting your own content is that you - the user - get to choose what is an appropriate trade-off between quality and filesize.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=29208&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2018/03/how-to-avoid-jpg-compression-on-twitter/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Making a Twitter Collage]]></title>
		<link>https://shkspr.mobi/blog/2016/11/making-a-twitter-collage/</link>
					<comments>https://shkspr.mobi/blog/2016/11/making-a-twitter-collage/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Sat, 19 Nov 2016 10:48:50 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[emoji]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[mozfest]]></category>
		<category><![CDATA[NaBloPoMo]]></category>
		<category><![CDATA[twitter]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=23565</guid>

					<description><![CDATA[This is a lazy way of making a collage of Tweets.  I was originally going to use this method:  Terence Eden is on Mastodon@edentReplying to @6byNine@6byNine it is all I&#039;ve got so far!❤️ 1💬 0🔁 019:11 - Sat 29 October 2016Mike@6byNineReplying to @edent@edent No idea about getting urls, but this may or may not be useful (cmd is also in image alt-text) pic.x.com/jh3yh4yki0❤️ 4💬 2🔁 020:01 - Sat 29 Octo…]]></description>
										<content:encoded><![CDATA[<p>This is a lazy way of making a collage of Tweets.</p>

<p>I was originally going to use this method:</p>

<blockquote class="social-embed" id="social-embed-792456454808756228" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><blockquote class="social-embed" id="social-embed-792443849129988096" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/6byNine/status/792443190955704320">Replying to @6byNine</a></small><a href="https://twitter.com/6byNine">@6byNine</a> it is all I've got so far!</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/792443849129988096"><span aria-label="1 likes" class="social-embed-meta">❤️ 1</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2016-10-29T19:11:51.000Z" itemprop="datePublished">19:11 - Sat 29 October 2016</time></a></footer></blockquote><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/6byNine" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRrQAAABXRUJQVlA4IKgAAABQBwCdASowADAAPp1CmEmlpCKhPHYIALATiWkAAOhV3TPI10vlFNG72nKGhuhDuu3RE0t4s7TEvoBel4kv79CzVcQAAP79UizaUrOaR+dJppBVBTEG9L/TaPgmZ/ngNsmKxabTBloRKVpLfJWOWbYF/Rhq4Ut6XuXW5AiDqJfhbEZzq9z9wdLd1G7BulWJrKAU9JwTbMAEjntbRt2TTf0JEKR7d8AAAAA=" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Mike</p>@6byNine</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/792443849129988096">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> No idea about getting urls, but this may or may not be useful (cmd is also in image alt-text) <a href="https://twitter.com/6byNine/status/792456454808756228/photo/1">pic.x.com/jh3yh4yki0</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/Cv9ey0SW8AAJ3-G.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="gnome-web-photo https://mobile.twitter.com/jen_h_williams/status/792307698972954628 /dev/stdout | convert - -crop 2000x2000+212+126 +repage -gravity SouthEast -crop 2000x2000+212+195 /tmp/foo2.png" src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/6byNine/status/792456454808756228"><span aria-label="4 likes" class="social-embed-meta">❤️ 4</span><span aria-label="2 replies" class="social-embed-meta">💬 2</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2016-10-29T20:01:56.000Z" itemprop="datePublished">20:01 - Sat 29 October 2016</time></a></footer></blockquote>

<p>but, sadly, <code>gnome-web-photo</code> crashed repeatedly when I tried to use it. It is a typically unloved Linux program, hundreds of bug reports, but no one looking to fix them.</p>

<p>Instead, I used the <a href="https://screenshotlayer.com/">Scheenshotlayer API</a> - I passed <code>wget</code> the URLs and got back a bunch of full sized screenshots.</p>

<p><code>wget</code> doesn't name the files nicely - so you just get the full URl as the filename.  Here's a quick bash script to rename them all with padded zeroes.</p>

<pre><code class="language-bash">var=1;
for file in *;
do
   printf -v num '%02d' $var ;
   mv ${file} ${num}.png;
   var=$((var+1));
done
</code></pre>

<p>OK, so, how do we grab just the parts that we want? Rather than using any fancy image recognition stuff, I measured the area by hand.</p>

<p>And, to cut the image out? ImageMagick to the rescue! Let's grab a rectangle 624 pixels wide, but 900 tall, starting at 400 pixels from the left and 0 pixels from the top.</p>

<p><code>convert tweet.png -crop 624x900+400+0 +repage cropped.png</code></p>

<p>The <a href="http://www.imagemagick.org/Usage/crop/#crop_repage"><code>+repage</code> is needed to prevent offsetting issues</a>.</p>

<p>And, to do that for all images in a directory:</p>

<p><code>mogrify -crop 624x900+400+0 +repage *.png</code></p>

<p>Right! Let's lay these out.  Without a doubt, the simplest way is using ImageMagick's <code>montage</code> command.</p>

<p><code>montage *.png -tile 4x10 -geometry +0+0 montage.png</code></p>

<p>This lays out all the images on a grid 4 images wide and 10 high. The <code>-geometry</code> ensures there is no border around the image.</p>

<p>I then resized the image suitable for sticking on a web page.</p>

<p>The result?</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/10/Poo-Emoji-Montage-of-Tweets.jpg" alt="poo emoji montage of tweets" width="1024" height="3692" class="aligncenter size-full wp-image-23566">

<h2 id="todo"><a href="https://shkspr.mobi/blog/2016/11/making-a-twitter-collage/#todo">TODO</a></h2>

<p>The only rough spot in this process is cropping the images.  At the moment, there's a lot of empty space around the Tweets. Some - with smaller photos - have gaps at the top and bottom.  A more intelligent method of extracting the information is needed!</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=23565&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/11/making-a-twitter-collage/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Selecting Text In Images - Pure SVG, No JavaScript]]></title>
		<link>https://shkspr.mobi/blog/2014/08/selecting-text-in-images-pure-svg-no-javascript/</link>
					<comments>https://shkspr.mobi/blog/2014/08/selecting-text-in-images-pure-svg-no-javascript/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Fri, 29 Aug 2014 11:05:59 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[ocr]]></category>
		<category><![CDATA[svg]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=10783</guid>

					<description><![CDATA[Recently, I wanted to embed an photograph of a book page.  I thought it would be nifty if the text from the page could be selected.  If you hover your mouse over this image, you should be able to select part of the text.     Ideally, it will look something like this...    It even works on Android (tried on Chrome, Opera, FireFox) and iOS 7.    So, how did I do it?  Originally, I was pointed to…]]></description>
										<content:encoded><![CDATA[<p>Recently, I wanted to embed an photograph of a book page.  I thought it would be nifty if the text from the page could be selected.</p>

<p>If you hover your mouse over this image, you should be able to select part of the text.</p>

<iframe src="https://shkspr.mobi/blog/wp-content/uploads/2014/08/SVG-Select-Text-Zero-Opacity.svg" width="566" height="170" scrolling="no"> </iframe>

<p>Ideally, it will look something like this...</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/08/Selected-Text.png" alt="Selected Text" width="469" height="125" class="aligncenter size-full wp-image-10784">

<p>It even works on Android (tried on Chrome, Opera, FireFox) and iOS 7.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2014/08/Android-SVG-Selection-fs8.png" alt="Android SVG Selection-fs8" width="605" height="386" class="aligncenter size-full wp-image-10799">

<p>So, how did I do it?</p>

<p>Originally, I was pointed to <a href="http://projectnaptha.com/">Project Naptha</a> - it seems to do everything I want but is very JavaScript heavy and requires modern browser support.</p>

<p>I then turned to SVG - Scalable Vector Graphics.</p>

<p>The way I've done this is <em>almost certainly wrong</em> and I'd appreciate any advice about the proper way to render text in an SVG.</p>

<p>The first part is easy - displaying a PNG as the background to the SVG.  In this case, I've taken the image and Base64 encoded it.</p>

<pre><code class="language-svg">&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
&lt;svg
   xmlns="http://www.w3.org/2000/svg"
   version="1.1"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   width="566"
   height="166"
&gt;
&lt;image xlink:href="data:image/png;base64,iVBORw0KGg...."
   x="0"
   y="0"
   width="566"
   height="166" /&gt;
</code></pre>

<p>The X &amp; Y co-ordinates are from the top left. I've manually added in the height and width of the image.</p>

<p>Next, we add the text.</p>

<pre><code class="language-svg">   &lt;g fill-opacity="0"&gt;
      &lt;text
         x="70"
         y="45"
         font-size="14"
         font-family="serif"
         textLength="415"
         lengthAdjust="spacingAndGlyphs"&gt;
         For nearly three years, between 1960 and 1963, MI5 and GCHQ
      &lt;/text&gt;
      &lt;text
         x="42"
         y="62"
         font-size="14"
         font-family="serif"
         textLength="440"
         lengthAdjust="spacingAndGlyphs"&gt;
         read the French high grade cipher coming in and out of the French
      &lt;/text&gt;
      ...
   &lt;/g&gt;
&lt;/svg&gt;
</code></pre>

<p>As you can see, I've grouped the text together in a &lt;g&gt; element.  I've set the opacity to zero - so while they are on top of the image, they cannot be seen unless selected.  I've also <strong>manually</strong> split the lines and placed them on the image.  I've set a "textLength" so that they'll fit across the page and automatically adjust themselves if they're too long.</p>

<p>This is <em>very</em> imprecise and quite time consuming.  To get a better idea of how accurate (or not) it is, here's the same image, with the opacity set to 0.5.</p>

<iframe src="https://shkspr.mobi/blog/wp-content/uploads/2014/08/SVG-Select-Text-Half-Opacity.svg" width="566" height="170" scrolling="no"> </iframe>

<p>Close enough, but not brilliant.</p>

<p>Finally, I've had to reference the images via an iframe.  Without doing that, I wasn't able to select the text. I'm not sure if that's a browser fault, or expected functionality.</p>

<p>If you can suggest a quicker and more accurate way of doing this - I'd <strong>love</strong> for you to leave a comment below.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=10783&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2014/08/selecting-text-in-images-pure-svg-no-javascript/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Ephemeral Media]]></title>
		<link>https://shkspr.mobi/blog/2013/02/ephemeral-media/</link>
					<comments>https://shkspr.mobi/blog/2013/02/ephemeral-media/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Wed, 27 Feb 2013 12:00:15 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[ephemeral]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[Social Networks]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=7666</guid>

					<description><![CDATA[Getting access to my Twitter archive opened my mind to the nature on transience of the media we create.  Take, for example, this tweet and image:  Terence Eden is on Mastodon@edenthttp://twitpic.com/2dhr3 - Loving #mint09 :-)❤️ 0💬 0🔁 012:24 - Mon 23 March 2009    Well... ok... fun at the moment it was taken, but does it have any use beyond that?  On the off chance that I become a subject for schol…]]></description>
										<content:encoded><![CDATA[<p>Getting access to my Twitter archive opened my mind to the nature on transience of the media we create.</p>

<p>Take, for example, this tweet and image:</p>

<blockquote class="social-embed" id="social-embed-1375155442" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">http://twitpic.com/2dhr3 - Loving <a href="https://twitter.com/hashtag/mint09">#mint09</a> :-)</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/1375155442"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2009-03-23T12:24:10.000Z" itemprop="datePublished">12:24 - Mon 23 March 2009</time></a></footer></blockquote>

<p><a href="http://twitpic.com/2dhr3" title="Loving #mint09 :-) on Twitpic"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/02/3988767.jpg" alt="Ephemeral Tweet" width="600" height="450" class="aligncenter size-full wp-image-7668"></a></p>

<p>Well... ok... fun at the moment it was taken, but does it have any use beyond that?  On the off chance that I become a subject for scholars in the year 3723, perhaps.</p>

<p>Should some media just be declared ephemeral? The word comes from the Greek εφήμερος – ephemeros, literally "lasting only one day".</p>

<p>Services like <a href="http://en.wikipedia.org/wiki/Snapchat">SnapChat</a> allow you to send a message to a single recipient, the photo then expires after 10 seconds. Perfect for sending sexually charged images which then vanish into the æther.</p>

<p>That's how it used to be.  A photograph had to be handled carefully or it would start to disintegrate.
<a title="By Michel Vuijlsteke (Own work) [CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0) or GFDL (http://www.gnu.org/copyleft/fdl.html)], via Wikimedia Commons" href="https://commons.wikimedia.org/wiki/File%3APortrait_restoration%2C_before_and_after.jpg"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/02/emphemeral-image.jpg" alt="emphemeral image" width="480" height="552" class="aligncenter size-full wp-image-7670"></a></p>

<p>Can we do this digitally?  Of course, bits rarely perish.  Neither do they lose any fidelity unless we expressly ask them to.  And, yes, anyone can save a pristine copy any time they want.</p>

<p>But, conceptually, it's very easy to create a photo sharing service where the images irreversibly degrade every time they are viewed.  Until there's little left but a clump of colours.</p>

<p>Imagine, for a moment, that every time a tourist glanced at the Mona Lisa and then walked idly by, a little bit of the image went with them.</p>

<p>Initially, she would be resplendent.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/02/Mona-Lisa-85.jpg" alt="Mona Lisa 85" width="402" height="599" class="aligncenter size-full wp-image-7674"></p>

<p>After a few years, she would be a bit dog-eared.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/02/Mona-Lisa-10.jpg" alt="Mona Lisa 10" width="402" height="599" class="aligncenter size-full wp-image-7678"></p>

<p>Eventually, she would succumb to the ravages of time.
<img src="https://shkspr.mobi/blog/wp-content/uploads/2013/02/Mona-Lisa-0.jpg" alt="Mona Lisa 0" width="402" height="599" class="aligncenter size-full wp-image-7676"></p>

<p>We could progressively add more Instagram style filters onto an image until it was last behind a miasma of faux nostalgia.
<a href="http://artagram.tumblr.com/"><img src="https://shkspr.mobi/blog/wp-content/uploads/2013/02/Mona-Lisa-Instagram.jpg" alt="Mona Lisa Instagram" width="402" height="599" class="aligncenter size-full wp-image-7681"></a>
(From <a href="http://artagram.tumblr.com/">Instagram "Improves" Art</a>)</p>

<p>We could degrade video quality, add scratches and blemishes, reduce audio fidelity an introduce the crackle of vinyl.  Text could gradually disintegrate.</p>

<p>Perhaps social networks should build in <a href="https://www.enisa.europa.eu/publications/the-right-to-be-forgotten">The Right To Be Forgotten</a> - make it a core feature, rather than a law to slavishly follow?</p>

<p>As time passes, gradually reduce the remnants of our past until they slowly fade away.  Mere ghosts in the machine.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=7666&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2013/02/ephemeral-media/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Google Contacts Copyright Madness]]></title>
		<link>https://shkspr.mobi/blog/2010/08/google-contacts-copyright-madness/</link>
					<comments>https://shkspr.mobi/blog/2010/08/google-contacts-copyright-madness/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 23 Aug 2010 16:19:34 +0000</pubDate>
				<category><![CDATA[mobile]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[contacts]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[lorem ipsum]]></category>
		<guid isPermaLink="false">http://shkspr.mobi/blog/?p=2405</guid>

					<description><![CDATA[Google has rightly received praise for its reworked &#34;Contacts&#34; functionality.  But there is still a rather glaring error.  One of the things I love to do is add images to my contacts.  It gives me a visual cue when I&#039;m scrolling through looking for a person, it prompts my memory when I see the face of a friend calling me, and it helps me remember what people look like.  As you can see, I&#039;m pretty …]]></description>
										<content:encoded><![CDATA[<p>Google has rightly <a href="http://lifehacker.com/5609315/google-contacts-upgrades-with-keyboard-shortcuts-better-gmail-integration-and-more">received praise</a> for its reworked "Contacts" functionality.  But there is still a rather glaring error.</p>

<p>One of the things I love to do is add images to my contacts.  It gives me a visual cue when I'm scrolling through looking for a person, it prompts my memory when I see the face of a friend calling me, and it helps me remember what people look like.
<a href="https://shkspr.mobi/blog/wp-content/uploads/2010/08/Contact-List-With-Images.png"><img class="aligncenter size-medium wp-image-2408" title="Contact List With Images" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/Contact-List-With-Images-180x300.png" alt="Contact List With Images" width="180" height="300"></a>
As you can see, I'm pretty good at keeping everyone's photo on my phone up to date.</p>

<h2 id="which-conditions-are-appropriate"><a href="https://shkspr.mobi/blog/2010/08/google-contacts-copyright-madness/#which-conditions-are-appropriate">Which Conditions Are Appropriate?</a></h2>

<p>Google's interface for uploading images has some rather confusing conditions attached to it...</p>

<blockquote><img class="aligncenter size-full wp-image-2406" title="Upload a picture" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/Upload-a-picture.png" alt="Upload a picture" width="551" height="335">
"Do not upload pictures containing celebrities, nudity, artwork or copyrighted images."</blockquote>

<p>What?  Those are some strange terms and conditions to have attached to a contact image.  I'm not sure if they're copy-and-pasted from another app - or if they're intentional.  Let's take a look at each one.</p>

<ul>
    <li>"Celebrities".&nbsp; If I've got a friend who is a celebrity - why can't I have her image as her contact picture?</li>
    <li>"Nudity".&nbsp; It's my phone.&nbsp; I am not going to offend myself if I see a nude picture of a friend that I've uploaded.&nbsp; This is before we get in to what defines nudity.</li>
    <li>"Artwork". This is just bizarre.&nbsp; If a street artist has drawn a caricature, I can't upload it?&nbsp; I can't use a company logo to indicate where my contact works?</li>
    <li>"Copyrighted images". Again - what? I own the copyright on images I've taken.&nbsp; I may have permission to reuse a copyrighted image.&nbsp; I may even be justified in using a copyrighted image for my personal use.&nbsp; I suspect they mean "images to which you don't have permission from the copyright holder to use for this purpose".&nbsp; But even that doesn't cover the <a href="http://en.wikipedia.org/wiki/Fair_dealing">Fair Dealing provisions</a> of many copyright laws.</li>
</ul>

<p>If you try to use an image which is already on the web, you get this curious message.</p>

<blockquote><img class="aligncenter size-full wp-image-2407" title="Bad manners" src="https://shkspr.mobi/blog/wp-content/uploads/2010/08/Bad-manners.png" alt="Bad manners" width="549" height="334">
"Remember, using others' images on the web without their permission may be bad manners or - even worse - copyright infringement."</blockquote>

<p>This is an odd statement.&nbsp; A mixture of folksy advice and legal warnings.&nbsp; I don't see how personal use of a thumbnail from even the most copyright laden of images could be construed as infringement.&nbsp; As for "bad manners" - is it really Google's role to advise me on etiquette?</p>

<h2 id="people-dont-read-but-copy-editing-matters"><a href="https://shkspr.mobi/blog/2010/08/google-contacts-copyright-madness/#people-dont-read-but-copy-editing-matters">People Don't Read - But Copy Editing Matters</a></h2>

<p>It's been well known fact for over 13 years that <a href="http://www.useit.com/alertbox/9710a.html">users don't read</a>.&nbsp; That's especially true if the text is small and grey - as it is in these examples.</p>

<p>But if you do want to impart vital information, you need to employ a skilled writer to help you craft your message.&nbsp; You need to understand what it is you're trying to say, why you're saying it and what you expect your users to understand.</p>

<p>In this case, Google has a very muddled and confusing set of conditions which seem illogical and users - if they read them at all - are likely to ignore them.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=2405&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2010/08/google-contacts-copyright-madness/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
