On Sunday, 17 June 2012 at 23:17:54 UTC, Stewart Gordon wrote:
You two should fuse it into one module, to give us loading/writing.
That would be quite cool.

I don't know how much of the code will need rewriting in order to support interlacing or all PNG colour types/depths.

But I also began writing a PNG library a while back - with the intention that it will be a full PNG editing library, not just encoding/decoding of the image data. But I haven't had much time to work on it recently. And it would help a lot if we could have the replacement for std.stream some time soon.

Stewart.

I just pushed an update which implements a PNG encoder. It is implemented in the Image class as a write method. If you have a raw buffer, and want to encode it, you can do something like this:

ubyte[] data = some data;
Image img = new Img!(Px.R8G8B8)(width, height, data);
img.write("mypng.png");

It uses adaptive filtering, and should work with the pixel formats supported by the image class (except for the 16 bit ones I've just realised). I've only tested it on images that I have previously loaded in however.

Stewart, I used your makepng.d as a template for this, can I add you to the author list?

Also, if preferred, I can keep the master branch as a single merged module, just let me know.

Cheers,
cal




Reply via email to