int bands[4] = { 3, 2, 1, 4 };
GDALDataset::RasterIO(..., 4, bands, 32, 32 * xSize, 1);
but then you probably mixed bits with bytes so:
int bands[4] = { 3, 2, 1, 4 };
GDALDataset::RasterIO(..., 4, bands, 4, 4 * xSize, 1);
[EMAIL PROTECTED] wrote:
I have a BGRA buffer in memory, and a multi-band RGBA TIF image. Is it
possible to use RasterIO to read in values from each band and neatly
interleave them in my buffer.
For example if I was loading an RGBA image I am hoping to be able to
make 4 separate RasterIO calls.
Assuming a BGRA image looks like:
0 - blue byte
8 - green byte
16 - red byte
24 - alpha byte
32 - blue byte
40 - green byte
48 - red byte
56 - alpha byte
64 - ....
The first RasterIO call would read in the blue values and insert them at
0, 32, 64, etc making it look like:
0 - blue byte
8 -
16 -
24 -
32 - blue byte
40 -
48 -
56 -
64 - ....
The second RasterIO call would read the green values and insert them at
8, 40, etc making it look like:
0 - blue byte
8 - green byte
16 -
24 -
32 - blue byte
40 - green byte
48 -
56 -
64 - ....
Rinse and repeat for red and alpha.
Is this possible, or is there a much much simpler way that I'm
overlooking? I've been looking at the paramaters for RasterIO but can't
seem to get it to work. I do understand that I can just read the values
into a separate buffer and memcpy them over to my image buffer. I was
trying to minimize the total number of times the same data has to be copied.
Thanks for the help.
Craig
------------------------------------------------------------------------
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev