Mercurial > hg > orthanc
changeset 2840:f4c232bba1eb
bgra32 to grayscale conversion
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 25 Sep 2018 10:17:59 +0200 |
parents | 0d8b753317b2 |
children | bf019ee38498 |
files | Core/Images/ImageProcessing.cpp |
diffstat | 1 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/Core/Images/ImageProcessing.cpp Tue Sep 25 07:08:37 2018 +0200 +++ b/Core/Images/ImageProcessing.cpp Tue Sep 25 10:17:59 2018 +0200 @@ -469,6 +469,25 @@ return; } + if (target.GetFormat() == PixelFormat_Grayscale8 && + source.GetFormat() == PixelFormat_BGRA32) + { + for (unsigned int y = 0; y < source.GetHeight(); y++) + { + const uint8_t* p = reinterpret_cast<const uint8_t*>(source.GetConstRow(y)); + uint8_t* q = reinterpret_cast<uint8_t*>(target.GetRow(y)); + for (unsigned int x = 0; x < source.GetWidth(); x++, q++) + { + *q = static_cast<uint8_t>((2126 * static_cast<uint32_t>(p[2]) + + 7152 * static_cast<uint32_t>(p[1]) + + 0722 * static_cast<uint32_t>(p[0])) / 10000); + p += 4; + } + } + + return; + } + if (target.GetFormat() == PixelFormat_RGB24 && source.GetFormat() == PixelFormat_RGBA32) {