mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-22 09:19:03 +00:00
LibGfx/JPEG2000: Support jpx extended 'colr' boxes
The T.800 spec says there should only be one 'colr' box, but the extended jpx file format spec in T.801 annex M allows having multiple. Method 2 is a basic ICC profile, while method 3 (jpx-only) allows full ICC profiles. Support that. For the test, I opened buggie.png in Photoshop, converted it to grayscale, and saved it as a JPEG2000, with "JP2 Compatible" checked and "Include Transparency" unchecked. I also unchecked "Include Metadata", and "Lossless". I left "Fast Mode" checked and the quality at the default 50.
This commit is contained in:
committed by
Andreas Kling
parent
3f740fc727
commit
ab7da32d25
@@ -584,6 +584,20 @@ TEST_CASE(test_jpeg2000_simple)
|
||||
EXPECT_EQ(icc_bytes->size(), 3144u);
|
||||
}
|
||||
|
||||
TEST_CASE(test_jpeg2000_gray)
|
||||
{
|
||||
auto file = TRY_OR_FAIL(Core::MappedFile::map(TEST_INPUT("jpeg2000/buggie-gray.jpf"sv)));
|
||||
EXPECT(Gfx::JPEG2000ImageDecoderPlugin::sniff(file->bytes()));
|
||||
auto plugin_decoder = TRY_OR_FAIL(Gfx::JPEG2000ImageDecoderPlugin::create(file->bytes()));
|
||||
|
||||
EXPECT_EQ(plugin_decoder->size(), Gfx::IntSize(64, 138));
|
||||
|
||||
// The file contains both a simple and a real profile. Make sure we get the bigger one.
|
||||
auto icc_bytes = MUST(plugin_decoder->icc_data());
|
||||
EXPECT(icc_bytes.has_value());
|
||||
EXPECT_EQ(icc_bytes->size(), 912u);
|
||||
}
|
||||
|
||||
TEST_CASE(test_pam_rgb)
|
||||
{
|
||||
auto file = TRY_OR_FAIL(Core::MappedFile::map(TEST_INPUT("pnm/2x1.pam"sv)));
|
||||
|
||||
Reference in New Issue
Block a user