From e2c9c092541cedfd641cac9a2e3eda41b57c90fb Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 25 Jan 2025 23:45:08 +0100 Subject: [PATCH] add get metadata from jpeg --- src/kds_s2000w_image_converter_netpbm.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/kds_s2000w_image_converter_netpbm.c b/src/kds_s2000w_image_converter_netpbm.c index d2b7945..612d726 100644 --- a/src/kds_s2000w_image_converter_netpbm.c +++ b/src/kds_s2000w_image_converter_netpbm.c @@ -52,6 +52,26 @@ void _kds_s2000w_image_converter_pnm_metadata(blobdata* image, image_metadata* m mdata->height = _kds_s2000w_image_converter_get_number_from_substring(image_data, middle, end); } +void _kds_s2000w_image_converter_jpeg_metadata(blobdata* image, image_metadata* mdata) +{ + FILE* jpeg_stream = fmemopen(image->data, image->size, "r"); + + struct jpeg_decompress_struct cinfo; + struct jpeg_error_mgr err; + + cinfo.err = jpeg_std_error(&err); + jpeg_create_decompress(&cinfo); + jpeg_stdio_src(&cinfo, jpeg_stream); + jpeg_read_header(&cinfo, TRUE); + + mdata->depth = 8; // TODO: get from metadata + mdata->width = cinfo.output_width; + mdata->height = cinfo.output_height; + + jpeg_finish_decompress(&cinfo); + jpeg_destroy_decompress(&cinfo); +} + void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata* image, image_metadata* mdata) { if (image->size < 2) @@ -63,6 +83,8 @@ void kds_s2000w_image_converter_metadata_from_scanner_image(blobdata* image, ima return; } + _kds_s2000w_image_converter_jpeg_metadata(image, mdata); + return; } -- 2.39.5