]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
change read jpeg from mem
authorBastian Dehn <hhaalo@arcor.de>
Fri, 14 Feb 2025 15:40:38 +0000 (16:40 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Fri, 14 Feb 2025 15:40:38 +0000 (16:40 +0100)
src/kds_s2000w_image_converter_netpbm.c

index 6cfdadf9442f70e706a4bbd1b6fd08e8a21f2b39..77e685f0005c862d25d2f63ce94edccde6010a68 100644 (file)
@@ -243,7 +243,6 @@ void _kds_s2000w_image_converter_write_pnm(uint8_t* data,
 }
 
 void _kds_s2000w_image_converter_gray_or_color_jpg_to_pnm(j_decompress_ptr cinfo,
-       FILE* jpeg_stream,
        FILE* pnm_stream,
        enum imgformat format)
 {
@@ -257,7 +256,6 @@ void _kds_s2000w_image_converter_gray_or_color_jpg_to_pnm(j_decompress_ptr cinfo
                row = &decompress_data[cinfo->output_width * cinfo->output_scanline * format];
                jpeg_read_scanlines(cinfo, &row, 1);
        }
-       fclose(jpeg_stream);
 
        _kds_s2000w_image_converter_write_pnm(decompress_data,
                decompress_size,
@@ -300,14 +298,13 @@ void _kds_s2000w_image_converter_jpg_to_pnm(blobdata* in, blobdata* out)
        if (!kds_s2000w_image_type_check_is_jpeg(in))
                return;
 
-       FILE* jpeg_stream = fmemopen(in->data, in->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_mem_src(&cinfo, (const unsigned char*) in->data, in->size);
        jpeg_read_header(&cinfo, TRUE);
        jpeg_start_decompress(&cinfo);
 
@@ -315,10 +312,10 @@ void _kds_s2000w_image_converter_jpg_to_pnm(blobdata* in, blobdata* out)
        FILE* pnm_stream = open_memstream(outdata, &out->size);
 
        if (cinfo.out_color_space == JCS_RGB)
-               _kds_s2000w_image_converter_gray_or_color_jpg_to_pnm(&cinfo, jpeg_stream, pnm_stream, RGB);
+               _kds_s2000w_image_converter_gray_or_color_jpg_to_pnm(&cinfo, pnm_stream, RGB);
 
        if (cinfo.out_color_space == JCS_GRAYSCALE)
-               _kds_s2000w_image_converter_gray_or_color_jpg_to_pnm(&cinfo, jpeg_stream, pnm_stream, GRAY);
+               _kds_s2000w_image_converter_gray_or_color_jpg_to_pnm(&cinfo, pnm_stream, GRAY);
 
        fclose(pnm_stream);
        out->data = malloc(sizeof(char) * out->size);