<div dir="ltr">That sounds cool!!!! Way to go Niklas!!!<div style><br></div><div style>Regards,</div><div style>Kashyap</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Mar 2, 2013 at 6:24 AM, Niklas Hambüchen <span dir="ltr">&lt;<a href="mailto:mail@nh2.me" target="_blank">mail@nh2.me</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I&#39;m happy to announce a new library, &quot;netpbm&quot;, a full implementation of<br>
the netpbm image formats (PPM, PGM, PBM) in pure Haskell.<br>
<br>
The P*N formats describe themselves as &quot;as easy as possible&quot;; they<br>
mainly consist of dimensions + uncompressed data and are used especially<br>
in between graphics programs, e.g. between ImageMagick and its<br>
ghostscript part as well as in ffmpeg.<br>
<br>
There are six formats (bitmap, greyscale, color, each of them coming in<br>
binary and ASCII variants). This parses all of them.<br>
<br>
The main focus of this library is *pedantic* adherence to the spec<br>
(<a href="http://netpbm.sourceforge.net/doc/pbm.html" target="_blank">http://netpbm.sourceforge.net/doc/pbm.html</a>) - in fact I claim that all<br>
implementations out there do not properly implement the spec correctly,<br>
not even the netpbm project itself. I have not properly verified this<br>
yet, but my library can parse valid PPM files that don&#39;t display in my<br>
image viewer (which is built on top of the C library in question).<br>
To be honest, one cannot really blame anybody for this since netpbm<br>
allows pretty insane things (such as comments inside numeric literals)<br>
and its claim to be simple is absolutely hilarious.<br>
<br>
haskell-netpbm is backed by an extensive test suite that checks its<br>
compatibility with images created by common programs (GIMP, convert),<br>
public data sets, and random pictures I found on the Internet.<br>
<br>
It is built using attoparsec. You can find it on<br>
<br>
    <a href="http://hackage.haskell.org/package/netpbm" target="_blank">http://hackage.haskell.org/package/netpbm</a><br>
<br>
Any contributions in form of code, tests images or claims that I don&#39;t<br>
implement the spec right are highly welcome at<br>
<br>
    <a href="https://github.com/nh2/haskell-netpbm" target="_blank">https://github.com/nh2/haskell-netpbm</a><br>
<br>
Please note that I just finished the implementation and that I will<br>
clean up (break) the API in the next release, but I found it made sense<br>
to announce it as early as possible now that the format implementation<br>
is complete.<br>
<br>
Niklas<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br></div>