From f5bc7b48aef1255309ea8441d34e07dfa58dc38b Mon Sep 17 00:00:00 2001 From: Sour Date: Wed, 25 Dec 2019 15:53:57 -0500 Subject: [PATCH] Screenshots: Create 24-bit PNG files instead of 32-bit files to save some space --- Utilities/PNGHelper.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Utilities/PNGHelper.cpp b/Utilities/PNGHelper.cpp index eaf6cf9e..bb03985f 100644 --- a/Utilities/PNGHelper.cpp +++ b/Utilities/PNGHelper.cpp @@ -7,13 +7,16 @@ bool PNGHelper::WritePNG(std::stringstream &stream, uint32_t* buffer, uint32_t x { size_t pngSize = 0; - //ARGB -> ABGR + //ARGB -> BGR uint32_t size = xSize * ySize * bitsPerPixel / 8 / 4; + vector convertedData(size*3, 0); for(uint32_t i = 0; i < size; i++) { - buffer[i] = (buffer[i] & 0xFF00FF00) | ((buffer[i] & 0xFF0000) >> 16) | ((buffer[i] & 0xFF) << 16); + convertedData[i * 3] = (buffer[i] & 0xFF0000) >> 16; + convertedData[i * 3 + 1] = (buffer[i] & 0xFF00) >> 8; + convertedData[i * 3 + 2] = (buffer[i] & 0xFF); } - void *pngData = tdefl_write_image_to_png_file_in_memory_ex(buffer, xSize, ySize, bitsPerPixel / 8, &pngSize, MZ_DEFAULT_LEVEL, MZ_FALSE); + void *pngData = tdefl_write_image_to_png_file_in_memory_ex(convertedData.data(), xSize, ySize, 3, &pngSize, MZ_DEFAULT_LEVEL, MZ_FALSE); if(!pngData) { std::cout << "tdefl_write_image_to_png_file_in_memory_ex() failed!" << std::endl; return false;