The primary limitation here is that these images are black-and-white. Not gray scale, but a one-bit image. This usually means that you have to squint and use your imagination to determine what the images are supposed to represent.
On the plus side, these images are typically represented by 100-200 bytes in each message, so their impact on message size is slight.
Ten years on, I think it's time to move on. The X-Face header was fun, but it would be even more fun to be able to put prettier images into the messages. Enter the Face header.
The Face header is a 48x48 PNG image. The number of colors are not to any set palette. The main limitation is that the header has to be less than 998 characters long, since that's a hard limit imposed by some news and mail servers. Messages that have a header longer than this are rejected by these servers.
The Face images are base64-encoded, which adds a 33% encoding
overhead. This means that the total size of the PNG must be
Here's the math:
When converting larger images to these 48x48 images, this can usually be achieved pretty easily by quantizing the image to a low number of colors. Most images can be squeezed to within these limits by quantizing to 8 or 10 colors.
This is the spec for the Face header:
The Face header representing the image above looks like this:
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAElBMVEX9/ftIS5IsNImXjKgc I3Dh29sdnA7JAAAB60lEQVR4nI2US5ajMAxFXeF4HtlhXlZ7AdCCBWCcORTx/rfSkgyEyqg14uii pw8SpnzaRmrm/8yWD0dZqn80G5WlUOVEnsCPNKp6D2w98JsWHcJuiOiCPnXGNPDIU/U7BuKPGe7G fAW/rNPhl+A4bqkC6IZDiwOwXb0CnKBtpjMJhgZoB96bXl5Gtftfr+AHJ4LlhRm8VOvmJlCvwM3U d41f9maX1dOADG4cQe1lDD3RAzVH+DXMhhUTfjOIkWexvAHRkCSiyZmuYBWlGpGfV0CihDyrW8yh bOYDaFU5d+8AU8YXqtQNEz5P92KskWFq54h/ONWs4OtpbDoiGCzmNatc05rmBE6AtQpKsdsOfoLD UBgci6JAqgqI8bI2F+AwjleAew6OwFYSWA8CVgFdrQqfCnIW8MKAdexscwWTbOML8Q0myV4y8218 7FIKomwvf5bO0ph+gZFbZCD7q2DZAc7nyQxv4FSLTcHjkLo5KS/Ox41lPHIExyEZRb4lP5zgR7c8 BV822d6UTiAjiQnGVfyyIZfpYmZg+gpiTvHsg4EzHOIVsMC9lsvP0He2B+qHmHOO6fsAAehpqSc+ yBNIF1wUgOXzCJDVBIB0Icfd2vKAN2jAubRfOvt3INsO+3XvdgGBgAH/OepfoIJ/RyuNKjhmbCAA AAAASUVORK5CYII=
An example command line to create such an image could be something like this:
djpeg face.jpg | ppmnorm | pnmscale -width 48 -height 48 | ppmquant 7 | pnmtopng > face.png
You then have to base64 encode this in some manner. News agents like Gnus will do that for you, and provides conveniency functions like gnus-face-from-file to create these headers.
If you're using some other news/mail reader, you might find this shell script helpful.
Here's an implementation for Microsoft Windows XP.
I dedicate the Face header to those ailing broadband companies, and hope that this will help bump up the network volume in these trying times.
Lars Magne Ingebrigtsen | Last modified: Wed Aug 17 07:10:01 CEST 2005 |