36 struct jpeg_decompress_struct cinfo;
37 struct jpeg_error_mgr jerr;
39 cinfo.err = jpeg_std_error(&jerr);
40 jpeg_create_decompress(&cinfo);
42 jpeg_stdio_src(&cinfo,
fimg);
43 jpeg_read_header(&cinfo,
TRUE);
55 aDim.
xdim = cinfo.image_width;
56 aDim.
ydim = cinfo.image_height;
67 jpeg_destroy_decompress(&cinfo);
87 for (
size_t i = 0;
i < aDim.
ndim;
i++)
91 jpeg_start_decompress( &cinfo );
96 JSAMPROW row_pointer[1];
97 row_pointer[0] =
new unsigned char [aDim.
xdim*cinfo.num_components];
99 while( cinfo.output_scanline < cinfo.image_height )
101 jpeg_read_scanlines( &cinfo, row_pointer, 1 );
102 for(
size_t i=0;
i<cinfo.image_width;
i++)
103 buffer[
i] = row_pointer[0][
i*cinfo.num_components];
104 setPage2T((cinfo.output_scanline - 1)*cinfo.image_width, buffer, DT_UChar, aDim.
xdim);
107 jpeg_finish_decompress( &cinfo );
108 jpeg_destroy_decompress( &cinfo );
109 delete[] row_pointer[0];
168 jpeg_compress_struct cinfo;
183 cinfo.err = jpeg_std_error(&jerr);
184 jpeg_create_compress(&cinfo);
186 jpeg_stdio_dest(&cinfo,
fimg);
189 cinfo.image_width = aDim.
xdim;
190 cinfo.image_height = aDim.
ydim;
191 cinfo.input_components = 1;
192 cinfo.in_color_space = JCS_GRAYSCALE;
194 jpeg_set_defaults(&cinfo);
196 jpeg_start_compress(&cinfo,
TRUE);
198 JSAMPROW row_pointer[1];
199 row_pointer[0] =
new unsigned char [aDim.
xdim];
200 char *
buffer = (
char*) row_pointer[0];
205 while (cinfo.next_scanline < cinfo.image_height)
208 DT_UChar, cinfo.image_width, min0, max0, castMode);
210 jpeg_write_scanlines(&cinfo, row_pointer, 1);
213 jpeg_finish_compress(&cinfo);
214 jpeg_destroy_compress(&cinfo);
215 delete[] row_pointer[0];
#define REPORT_ERROR(nerr, ErrormMsg)
virtual void setPage2T(size_t offset, char *page, DataType datatype, size_t pageSize)=0
virtual void coreAllocateReuse()=0
void setValue(const MDObject &object) override
std::vector< std::unique_ptr< MDRow > > MD
boolean empty_buffer(jpeg_compress_struct *cinfo)
virtual void computeDoubleMinMaxRange(double &minval, double &maxval, size_t offset, size_t size) const =0
const size_t tiff_map_min_size
virtual void setDimensions(int Xdim, int Ydim, int Zdim, size_t Ndim)=0
virtual bool isComplexT() const =0
static MDRowVec emptyHeaderVec()
void term_buffer(jpeg_compress_struct *cinfo)
int readJPEG(size_t select_img)
void init_buffer(jpeg_compress_struct *cinfo)
virtual void getCastConvertPageFromT(size_t offset, char *page, DataType datatype, size_t pageSize, double min0, double max0, CastWriteMode castMode=CW_CONVERT) const =0
Incorrect MultidimArray dimensions.
virtual DataType myT() const =0
MultidimArrayBase * mdaBase
int writeJPEG(size_t select_img, bool isStack=false, int mode=WRITE_OVERWRITE, String bitDepth="", CastWriteMode castMode=CW_CONVERT)
size_t gettypesize(DataType type)
Returns memory size of datatype.
void getDimensions(size_t &Xdim, size_t &Ydim, size_t &Zdim, size_t &Ndim) const