]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add get metadata from jpeg
authorBastian Dehn <hhaalo@arcor.de>
Sat, 25 Jan 2025 22:45:08 +0000 (23:45 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 25 Jan 2025 22:45:08 +0000 (23:45 +0100)
src/kds_s2000w_image_converter_netpbm.c

index d2b7945488054f68edaba679f31b0780d478042d..612d726da214770fe6236787c97d9aa76597c42a 100644 (file)
@@ -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;
 }