diff --git a/Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp index 6b75bfc9b44..5550d4ca170 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/TIFFLoader.cpp @@ -103,6 +103,12 @@ public: if (!m_metadata.rows_per_strip().has_value() && segment_byte_counts()->size() != 1 && !is_tiled()) return Error::from_string_literal("TIFFImageDecoderPlugin: RowsPerStrip is not provided and impossible to deduce"); + if (!m_metadata.bits_per_sample().has_value()) + return Error::from_string_literal("TIFFImageDecoderPlugin: Tag BitsPerSample is missing"); + + if (!m_metadata.samples_per_pixel().has_value()) + return Error::from_string_literal("TIFFImageDecoderPlugin: Tag SamplesPerPixel is missing"); + if (any_of(*m_metadata.bits_per_sample(), [](auto bit_depth) { return bit_depth == 0 || bit_depth > 32; })) return Error::from_string_literal("TIFFImageDecoderPlugin: Invalid value in BitsPerSample"); diff --git a/Userland/Libraries/LibGfx/TIFFGenerator.py b/Userland/Libraries/LibGfx/TIFFGenerator.py index fcd7324e935..7d2d3237f57 100755 --- a/Userland/Libraries/LibGfx/TIFFGenerator.py +++ b/Userland/Libraries/LibGfx/TIFFGenerator.py @@ -125,7 +125,7 @@ Tag = namedtuple( known_tags: List[Tag] = [ Tag('256', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [1], None, "ImageWidth", is_required=True), Tag('257', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [1], None, "ImageLength", is_required=True), - Tag('258', [TIFFType.UnsignedShort], [], None, "BitsPerSample", is_required=True), + Tag('258', [TIFFType.UnsignedShort], [], None, "BitsPerSample", is_required=False), Tag('259', [TIFFType.UnsignedShort], [1], None, "Compression", Compression, is_required=True), Tag('262', [TIFFType.UnsignedShort], [1], None, "PhotometricInterpretation", PhotometricInterpretation, is_required=True), @@ -134,7 +134,7 @@ known_tags: List[Tag] = [ Tag('272', [TIFFType.ASCII], [], None, "Model"), Tag('273', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [], None, "StripOffsets", is_required=False), Tag('274', [TIFFType.UnsignedShort], [1], Orientation.Default, "Orientation", Orientation), - Tag('277', [TIFFType.UnsignedShort], [1], None, "SamplesPerPixel", is_required=True), + Tag('277', [TIFFType.UnsignedShort], [1], None, "SamplesPerPixel", is_required=False), Tag('278', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [1], None, "RowsPerStrip", is_required=False), Tag('279', [TIFFType.UnsignedShort, TIFFType.UnsignedLong], [], None, "StripByteCounts", is_required=False), Tag('282', [TIFFType.UnsignedRational], [1], None, "XResolution"),