mirror of
https://github.com/bkaradzic/bimg.git
synced 2026-02-17 20:52:38 +01:00
EXR write: Changed channel order to make GIMP and PS load .exr correctly.
This commit is contained in:
@@ -4892,13 +4892,15 @@ namespace bimg
|
||||
total += bx::writeLE(_writer, uint32_t(18*4+1), _err);
|
||||
|
||||
const uint8_t cdata[] = { 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 };
|
||||
total += bx::write(_writer, 'R', _err);
|
||||
total += bx::write(_writer, cdata, BX_COUNTOF(cdata), _err);
|
||||
total += bx::write(_writer, 'G', _err);
|
||||
// Order is always ABGR order because Photoshop and GIMP ignore these fields and
|
||||
// assume it's in ABGR order.
|
||||
total += bx::write(_writer, 'A', _err);
|
||||
total += bx::write(_writer, cdata, BX_COUNTOF(cdata), _err);
|
||||
total += bx::write(_writer, 'B', _err);
|
||||
total += bx::write(_writer, cdata, BX_COUNTOF(cdata), _err);
|
||||
total += bx::write(_writer, 'A', _err);
|
||||
total += bx::write(_writer, 'G', _err);
|
||||
total += bx::write(_writer, cdata, BX_COUNTOF(cdata), _err);
|
||||
total += bx::write(_writer, 'R', _err);
|
||||
total += bx::write(_writer, cdata, BX_COUNTOF(cdata), _err);
|
||||
total += bx::write(_writer, '\0', _err);
|
||||
|
||||
@@ -4974,12 +4976,7 @@ namespace bimg
|
||||
|
||||
for (uint32_t xx = 0; xx < _width && _err->isOk(); ++xx)
|
||||
{
|
||||
total += bx::write(_writer, &data[xx*bpp/8+0*bytesPerChannel], bytesPerChannel, _err);
|
||||
}
|
||||
|
||||
for (uint32_t xx = 0; xx < _width && _err->isOk(); ++xx)
|
||||
{
|
||||
total += bx::write(_writer, &data[xx*bpp/8+1*bytesPerChannel], bytesPerChannel, _err);
|
||||
total += bx::write(_writer, &data[xx*bpp/8+3*bytesPerChannel], bytesPerChannel, _err);
|
||||
}
|
||||
|
||||
for (uint32_t xx = 0; xx < _width && _err->isOk(); ++xx)
|
||||
@@ -4989,7 +4986,12 @@ namespace bimg
|
||||
|
||||
for (uint32_t xx = 0; xx < _width && _err->isOk(); ++xx)
|
||||
{
|
||||
total += bx::write(_writer, &data[xx*bpp/8+3*bytesPerChannel], bytesPerChannel, _err);
|
||||
total += bx::write(_writer, &data[xx*bpp/8+1*bytesPerChannel], bytesPerChannel, _err);
|
||||
}
|
||||
|
||||
for (uint32_t xx = 0; xx < _width && _err->isOk(); ++xx)
|
||||
{
|
||||
total += bx::write(_writer, &data[xx*bpp/8+0*bytesPerChannel], bytesPerChannel, _err);
|
||||
}
|
||||
|
||||
data += _srcPitch;
|
||||
|
||||
Reference in New Issue
Block a user