mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 09:49:15 +03:00
LibGfx/TIFF: Add an alternative entry point to only request metadata
A lot of images format use Exif to store there metadata. As Exif is based on the TIFF structure, the TIFF decoder can, without modification be able to decode the metadata. We only need a new API to explicitly mention that we only need the metadata.
This commit is contained in:
parent
12c38035db
commit
f6f647bf13
Notes:
sideshowbarker
2024-07-17 02:22:23 +09:00
Author: https://github.com/LucasChollet Commit: https://github.com/SerenityOS/serenity/commit/f6f647bf13 Pull-request: https://github.com/SerenityOS/serenity/pull/22891 Reviewed-by: https://github.com/ADKaster ✅
@ -622,4 +622,12 @@ ErrorOr<Optional<ReadonlyBytes>> TIFFImageDecoderPlugin::icc_data()
|
||||
return m_context->metadata().icc_profile().map([](auto const& buffer) -> ReadonlyBytes { return buffer.bytes(); });
|
||||
}
|
||||
|
||||
ErrorOr<NonnullOwnPtr<ExifMetadata>> TIFFImageDecoderPlugin::read_exif_metadata(ReadonlyBytes data)
|
||||
{
|
||||
auto stream = TRY(try_make<FixedMemoryStream>(data));
|
||||
auto plugin = TRY(adopt_nonnull_own_or_enomem(new (nothrow) TIFFImageDecoderPlugin(move(stream))));
|
||||
TRY(plugin->m_context->decode_image_header());
|
||||
return try_make<ExifMetadata>(plugin->m_context->metadata());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,10 +7,13 @@
|
||||
#pragma once
|
||||
|
||||
#include <AK/MemoryStream.h>
|
||||
#include <AK/NonnullOwnPtr.h>
|
||||
#include <LibGfx/ImageFormats/ImageDecoder.h>
|
||||
|
||||
namespace Gfx {
|
||||
|
||||
class ExifMetadata;
|
||||
|
||||
// This is a link to the main TIFF specification from 1992
|
||||
// https://www.itu.int/itudoc/itu-t/com16/tiff-fx/docs/tiff6.pdf
|
||||
|
||||
@ -33,6 +36,7 @@ class TIFFImageDecoderPlugin : public ImageDecoderPlugin {
|
||||
public:
|
||||
static bool sniff(ReadonlyBytes);
|
||||
static ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> create(ReadonlyBytes);
|
||||
static ErrorOr<NonnullOwnPtr<ExifMetadata>> read_exif_metadata(ReadonlyBytes);
|
||||
|
||||
virtual ~TIFFImageDecoderPlugin() override = default;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user