Hi!
I'm trying to work with binary output from GMIC, but cannot find any information about its format. My researches led me to following conclusions ↓
File consists of main header and data blocks which consist of block header and block data. Main header is
N <pixel type> <byte order>\0x0A
where N is a number of block entries (as I suppose), <pixel type> is
float and <byte order> is
little_endian.
Next to it is a block header
where W is a picture width, H is a picture height, BpC is byte-per-channel, NoC is a number of channels, and S is the size of data which follows this header. But what I see then cannot be described!
As written in GMIC documentation, calculations and data storage is made using 32-bit floats. Ok, let's assume the following command line
GMIC RGB.png -luminance --fft -append[-2,-1] c -norm. -log. -shift. 50%,50%,0,0,2 -o Float
for 5×5 RGB image. On output we have this ↓

There are 3 image blocks: two 5x5 1-channel 8-bit images and strange 1×21 1-channel 8-bit image. But data sizes of 38 and 70 cannot be divided to 5×5=25! For 32-bit float data size must be 5×5×4=100 bytes.
What is a magical format used to store pixel data?