diff --git a/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp b/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp index 312ba5b33f..12a378ce4c 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp @@ -517,12 +517,8 @@ ErrorOr add_scan_header(Stream& stream) return {}; } -} - -ErrorOr JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options const& options) +ErrorOr add_headers(Stream& stream, JPEGEncodingContext& context, JPEGWriter::Options const& options, IntSize size) { - JPEGEncodingContext context { JPEGBigEndianOutputBitStream { stream } }; - context.set_luminance_quantization_table(s_default_luminance_quantization_table, options.quality); context.set_chrominance_quantization_table(s_default_chrominance_quantization_table, options.quality); @@ -537,7 +533,7 @@ ErrorOr JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options c if (options.icc_data.has_value()) TRY(add_icc_data(stream, options.icc_data.value())); - TRY(add_frame_header(stream, context, bitmap.size())); + TRY(add_frame_header(stream, context, size)); TRY(add_quantization_table(stream, context.luminance_quantization_table())); TRY(add_quantization_table(stream, context.chrominance_quantization_table())); @@ -548,6 +544,15 @@ ErrorOr JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options c TRY(add_huffman_table(stream, context.ac_chrominance_huffman_table)); TRY(add_scan_header(stream)); + return {}; +} + +} + +ErrorOr JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options const& options) +{ + JPEGEncodingContext context { JPEGBigEndianOutputBitStream { stream } }; + TRY(add_headers(stream, context, options, bitmap.size())); TRY(context.initialize_mcu(bitmap)); context.fdct_and_quantization();