<div class="gmail_quote">Hi,<br>I&#39;m using little attached program to convert my RGB and RGBA PNG&#39;s to png8. But with RGBA pngs it&#39;s limited because it uses only GIF-like 1-bit transparency. Seems that the alpha transparency in 8-bit (and 4-bit) PNG&#39;s is little known or supported. But the main browsers seem to support it including IE 6.0. One opensource utility which supports writing these is: <a href="http://www.libpng.org/pub/png/apps/pngquant.html" target="_blank">http://www.libpng.org/pub/png/apps/pngquant.html</a> .<br>


<br>It would be greate if PIL would also do that.<br><br>Have a nice day,<br>Tibor<br><br><br><br>import Image<br>import random<br>import optparse<br>import sys<br><br>def quantize_and_invert(alpha):<br>&nbsp;&nbsp;&nbsp; if alpha &lt;= 64: # You may change the threshold value into something other. <br>


&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 255<br>&nbsp;&nbsp;&nbsp; return 0<br><br>im = Image.open(sys.argv[1])<br><br>if im.mode==&#39;RGBA&#39;:<br>&nbsp;&nbsp;&nbsp; print &quot;Warning, converting alpha transparency to 1-bit transparency&quot;<br>&nbsp;&nbsp;&nbsp; al = im.split()[3]<br>


&nbsp;&nbsp;&nbsp; al = Image.eval(al, quantize_and_invert)<br>&nbsp;&nbsp;&nbsp; colors=255<br>else:<br>&nbsp;&nbsp;&nbsp; al = None<br>&nbsp;&nbsp;&nbsp; colors=256<br>if im.mode!=&#39;RGB&#39;:<br>&nbsp;&nbsp;&nbsp; im = im.convert(&#39;RGB&#39;)<br>im=im.convert(&#39;P&#39;, palette=Image.ADAPTIVE, colors=colors)<br>


if al: im.paste(255,None,al)<br>im.save(&#39;out.png&#39;,optimize=1, transparency=255)<br><br><br><br>
</div><br>