![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <jpeglib.h>
#include "common/colorspaces.h"
#include "common/image.h"
#include "common/mipmap_cache.h"
Go to the source code of this file.
Data Structures | |
struct | dt_imageio_jpeg_t |
Typedefs | |
typedef struct dt_imageio_jpeg_t | dt_imageio_jpeg_t |
Functions | |
int | dt_imageio_jpeg_decompress_header (const void *in, size_t length, dt_imageio_jpeg_t *jpg) |
int | dt_imageio_jpeg_decompress (dt_imageio_jpeg_t *jpg, uint8_t *out) |
int | dt_imageio_jpeg_compress (const uint8_t *in, uint8_t *out, const int width, const int height, const int quality) |
int | dt_imageio_jpeg_write (const char *filename, const uint8_t *in, const int width, const int height, const int quality, const void *exif, int exif_len) |
int | dt_imageio_jpeg_write_with_icc_profile (const char *filename, const uint8_t *in, const int width, const int height, const int quality, const void *exif, int exif_len, int32_t imgid) |
int | dt_imageio_jpeg_read_header (const char *filename, dt_imageio_jpeg_t *jpg) |
int | dt_imageio_jpeg_read (dt_imageio_jpeg_t *jpg, uint8_t *out) |
int | dt_imageio_jpeg_read_profile (dt_imageio_jpeg_t *jpg, uint8_t **out) |
dt_colorspaces_color_profile_type_t | dt_imageio_jpeg_read_color_space (dt_imageio_jpeg_t *jpg) |
dt_imageio_retval_t | dt_imageio_open_jpeg (dt_image_t *img, const char *filename, dt_mipmap_buffer_t *buf) |
typedef struct dt_imageio_jpeg_t dt_imageio_jpeg_t |
int dt_imageio_jpeg_compress | ( | const uint8_t * | in, |
uint8_t * | out, | ||
const int | width, | ||
const int | height, | ||
const int | quality | ||
) |
compresses in to out buffer with given quality (0..100). out buffer must be large enough. returns actual data length.
References dt_imageio_jpeg_t::dest, dt_alloc_align, dt_free_align, dt_imageio_jpeg_empty_output_buffer(), dt_imageio_jpeg_error_exit(), dt_imageio_jpeg_init_destination(), dt_imageio_jpeg_term_destination(), height, dt_imageio_jpeg_error_mgr::pub, dt_imageio_jpeg_error_mgr::setjmp_buffer, TRUE, and width.
int dt_imageio_jpeg_decompress | ( | dt_imageio_jpeg_t * | jpg, |
uint8_t * | out | ||
) |
reads the whole image to the out buffer, which has to be large enough.
References decompress_plain(), dt_imageio_jpeg_t::dinfo, dt_imageio_jpeg_error_exit(), dt_imageio_jpeg_error_mgr::pub, dt_imageio_jpeg_error_mgr::setjmp_buffer, and void().
Referenced by dt_imageio_large_thumbnail(), and dt_mipmap_cache_allocate_dynamic().
int dt_imageio_jpeg_decompress_header | ( | const void * | in, |
size_t | length, | ||
dt_imageio_jpeg_t * | jpg | ||
) |
reads the header and fills width/height in jpg struct.
References dt_imageio_jpeg_t::dinfo, dt_imageio_jpeg_error_exit(), dt_imageio_jpeg_fill_input_buffer(), dt_imageio_jpeg_init_source(), dt_imageio_jpeg_skip_input_data(), dt_imageio_jpeg_term_source(), dt_imageio_jpeg_t::height, dt_imageio_jpeg_error_mgr::pub, dt_imageio_jpeg_error_mgr::setjmp_buffer, setup_read_exif(), setup_read_icc_profile(), dt_imageio_jpeg_t::src, TRUE, and dt_imageio_jpeg_t::width.
Referenced by dt_imageio_large_thumbnail(), and dt_mipmap_cache_allocate_dynamic().
int dt_imageio_jpeg_read | ( | dt_imageio_jpeg_t * | jpg, |
uint8_t * | out | ||
) |
reads the jpeg to the (sufficiently allocated) buffer, closes file.
References dt_imageio_jpeg_t::dinfo, dt_imageio_jpeg_error_exit(), dt_imageio_jpeg_t::f, dt_imageio_jpeg_error_mgr::pub, read_plain(), dt_imageio_jpeg_error_mgr::setjmp_buffer, and void().
Referenced by _load_jpg(), and dt_imageio_open_jpeg().
dt_colorspaces_color_profile_type_t dt_imageio_jpeg_read_color_space | ( | dt_imageio_jpeg_t * | jpg | ) |
return the color space of the image, this only distinguishs between sRGB, AdobeRGB and unknown. used for mipmaps
References dt_imageio_jpeg_t::dinfo, DT_COLORSPACE_DISPLAY, dt_exif_get_color_space(), and EXIF_MARKER.
Referenced by _load_jpg(), and dt_mipmap_cache_allocate_dynamic().
int dt_imageio_jpeg_read_header | ( | const char * | filename, |
dt_imageio_jpeg_t * | jpg | ||
) |
read jpeg header from file, leave file descriptor open until jpeg_read is called.
References dt_imageio_jpeg_t::dinfo, dt_imageio_jpeg_error_exit(), dt_imageio_jpeg_t::f, dt_imageio_jpeg_t::height, dt_imageio_jpeg_error_mgr::pub, dt_imageio_jpeg_error_mgr::setjmp_buffer, setup_read_exif(), setup_read_icc_profile(), TRUE, and dt_imageio_jpeg_t::width.
Referenced by _load_jpg(), dt_image_find_best_color_profile(), and dt_imageio_open_jpeg().
int dt_imageio_jpeg_read_profile | ( | dt_imageio_jpeg_t * | jpg, |
uint8_t ** | out | ||
) |
reads the color profile attached to the jpeg, closes file.
References dt_imageio_jpeg_t::dinfo, dt_imageio_jpeg_t::f, and read_icc_profile().
Referenced by dt_image_find_best_color_profile().
int dt_imageio_jpeg_write | ( | const char * | filename, |
const uint8_t * | in, | ||
const int | width, | ||
const int | height, | ||
const int | quality, | ||
const void * | exif, | ||
int | exif_len | ||
) |
write jpeg to file, with exif if not NULL.
References dt_imageio_jpeg_write_with_icc_profile(), height, and width.
Referenced by dt_mipmap_cache_deallocate_dynamic().
int dt_imageio_jpeg_write_with_icc_profile | ( | const char * | filename, |
const uint8_t * | in, | ||
const int | width, | ||
const int | height, | ||
const int | quality, | ||
const void * | exif, | ||
int | exif_len, | ||
int32_t | imgid | ||
) |
this will collect the images icc profile (or the global export override) and append it during write.
References dt_imageio_jpeg_t::cinfo, dt_alloc_align, DT_COLORSPACE_NONE, dt_colorspaces_get_output_profile(), dt_free_align, dt_imageio_jpeg_error_exit(), f(), height, dt_colorspaces_color_profile_t::profile, dt_imageio_jpeg_error_mgr::pub, dt_imageio_jpeg_error_mgr::setjmp_buffer, TRUE, type, width, and write_icc_profile().
Referenced by dt_imageio_jpeg_write().
dt_imageio_retval_t dt_imageio_open_jpeg | ( | dt_image_t * | img, |
const char * | filename, | ||
dt_mipmap_buffer_t * | buf | ||
) |
utility function to read and open jpeg from imagio.c
References dt_image_t::buf_dsc, dt_iop_buffer_dsc_t::channels, dt_iop_buffer_dsc_t::cst, dt_iop_buffer_dsc_t::datatype, dt_alloc_align, dt_exif_read(), dt_free_align, DT_IMAGE_LDR, DT_IMAGEIO_CACHE_FULL, DT_IMAGEIO_FILE_CORRUPTED, dt_imageio_flip_buffers_ui8_to_float(), dt_imageio_jpeg_read(), dt_imageio_jpeg_read_header(), DT_IMAGEIO_OK, dt_mipmap_cache_alloc(), dt_image_t::exif_inited, dt_iop_buffer_dsc_t::filters, dt_image_t::flags, dt_image_t::height, dt_imageio_jpeg_t::height, IOP_CS_RGB, dt_image_t::loader, LOADER_JPEG, TYPE_FLOAT, void(), dt_image_t::width, and dt_imageio_jpeg_t::width.
Referenced by dt_imageio_open_raster().