diff --git a/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp b/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp index a9b5e64d5e..623e2b8e96 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.cpp @@ -475,14 +475,12 @@ ErrorOr add_scan_header(Stream& stream) } -ErrorOr JPEGWriter::encode(Stream& stream, Bitmap const& bitmap) +ErrorOr JPEGWriter::encode(Stream& stream, Bitmap const& bitmap, Options const& options) { JPEGEncodingContext context { JPEGBigEndianOutputBitStream { stream } }; - // FIXME: Let's take the quality as an option instead of hardcoding it - // (there might also be a bug with quantization tables :^)). - context.set_luminance_quantization_table(s_default_luminance_quantization_table, 100); - context.set_chrominance_quantization_table(s_default_chrominance_quantization_table, 100); + context.set_luminance_quantization_table(s_default_luminance_quantization_table, options.quality); + context.set_chrominance_quantization_table(s_default_chrominance_quantization_table, options.quality); context.dc_luminance_huffman_table = s_default_dc_luminance_huffman_table; context.dc_chrominance_huffman_table = s_default_dc_chrominance_huffman_table; diff --git a/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.h b/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.h index 96ea9eee65..4ab8cc1a4f 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.h +++ b/Userland/Libraries/LibGfx/ImageFormats/JPEGWriter.h @@ -11,9 +11,15 @@ namespace Gfx { +struct JPEGEncoderOptions { + u8 quality { 75 }; +}; + class JPEGWriter { public: - static ErrorOr encode(Stream&, Bitmap const&); + using Options = JPEGEncoderOptions; + + static ErrorOr encode(Stream&, Bitmap const&, Options const& = {}); private: JPEGWriter() = delete;