Constructor
Calculates the least density that can be used to store n bytes into loaded image.
decodes data from loaded image
encodes data into loaded image.
Loads an image.
Saves an image
Checks if a number is a valid value for use as storage density
writeln("pngtext.d unittests:"); import std.stdio : writeln; import std.conv : to; writeln("unittests for PNGText.splitByte and PNGText.joinByte started"); // splitByte ubyte[] bytes; bytes.length = 8; bytes[] = 128; PNGText.splitByte(cast(ubyte)0B10101010, cast(ubyte)0, bytes); assert(bytes == [128, 129, 128, 129, 128, 129, 128, 129]); assert(PNGText.joinByte(bytes, cast(ubyte)0) == 0B10101010); PNGText.splitByte(cast(ubyte)0B10101010, cast(ubyte)1, bytes); assert(bytes[0 .. 4] == [130, 130, 130, 130]); assert(PNGText.joinByte(bytes[0 .. 4], cast(ubyte)1) == 0B10101010); PNGText.splitByte(cast(ubyte)0B10101010, cast(ubyte)2, bytes); assert(bytes[0 .. 2] == [0B10001010, 0B10001010]); assert(PNGText.joinByte(bytes[0 .. 2], cast(ubyte)2) == 0B10101010); PNGText.splitByte(cast(ubyte)0B10101010, cast(ubyte)3, bytes); assert(bytes[0] == 0B10101010); assert(PNGText.joinByte(bytes[0 .. 1], cast(ubyte)3) == 0B10101010); writeln("unittests for PNGText.writeHeader and PNGText.readHeader started"); // write some stuff PNGText obj = new PNGText(); obj.createDummyStream(1024); obj._stream[] = 0B01011100; bytes.length = HEADER_LENGTH; bytes = [215, 1, 0]; obj.writeHeader(bytes); assert (obj.readHeader == bytes); // write some more stuff bytes[] = 0B00111100; obj.writeHeader(bytes); assert(obj.readHeader == [0B00111100, 0B00111100, 0B00111100]); writeln("unittests for PNGText.encodeDataToStream and PNGText.decodeDataFromStream started"); bytes.length = 100; foreach (i; 0 .. bytes.length){ bytes[i] = cast(ubyte)i; } foreach (density; DENSITIES){ obj._data = bytes.dup; writeln("\tencoding with density=",density); obj.encodeDataToStream(density); obj._data[] = 0; writeln("\tdecoding with density=",density); obj.decodeDataFromStream(density, 100); assert(obj._data == bytes); } writeln("pngtext.d unittests over");
To read/write data from a png image