From bcc066a2e03eb474fa98f5721fa139d3bad15835 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Wed, 24 Sep 2025 23:07:14 +1000 Subject: [PATCH] Image: Fix a couple of random bugs --- src/util/image.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/util/image.cpp b/src/util/image.cpp index b322ac030..e45394e93 100644 --- a/src/util/image.cpp +++ b/src/util/image.cpp @@ -123,6 +123,12 @@ void Image::Resize(u32 new_width, u32 new_height, ImageFormat format, bool prese if (m_width == new_width && m_height == new_height && m_format == format) return; + if (new_width == 0 || new_height == 0) + { + Invalidate(); + return; + } + if (!preserve) m_pixels.reset(); @@ -767,9 +773,9 @@ bool Image::ConvertToRGBA8(void* RESTRICT pixels_out, u32 pixels_out_pitch, cons row_pixels_in += sizeof(u16); const u8 a1 = Truncate8(pixel_in & 0x01); const u8 r5 = Truncate8((pixel_in >> 11) & 0x1F); - const u8 g6 = Truncate8((pixel_in >> 6) & 0x1F); + const u8 g6 = Truncate8((pixel_in >> 6) & 0x3F); const u8 b5 = Truncate8((pixel_in >> 1) & 0x1F); - const u32 rgba8 = ZeroExtend32((r5 << 3) | (r5 & 7)) | (ZeroExtend32((g6 << 3) | (g6 & 7)) << 8) | + const u32 rgba8 = ZeroExtend32((r5 << 3) | (r5 & 7)) | (ZeroExtend32((g6 << 2) | (g6 & 3)) << 8) | (ZeroExtend32((b5 << 3) | (b5 & 7)) << 16) | (a1 ? 0xFF000000u : 0u); std::memcpy(row_pixels_out, &rgba8, sizeof(u32)); row_pixels_out += sizeof(u32); @@ -1079,7 +1085,7 @@ bool PNGBufferSaver(const Image& image, DynamicHeapArray* data, u8 quality, return false; png_set_write_fn( - png_ptr, data, + png_ptr, &iodata, [](png_structp png_ptr, png_bytep data_ptr, png_size_t size) { IOData* iodata = static_cast(png_get_io_ptr(png_ptr)); const size_t new_pos = iodata->buffer_pos + size;