18 #ifndef PIC_IO_EXR_TINY_HPP 19 #define PIC_IO_EXR_TINY_HPP 21 #include "../base.hpp" 23 #ifndef PIC_DISABLE_TINY_EXR 25 #define TINYEXR_IMPLEMENTATION 27 #include "../util/std_util.hpp" 29 #include "../externals/tinyexr/tinyexr.h" 33 PIC_INLINE float *
ReadEXR(std::string nameFile,
float *data,
int &width,
int &height,
int &channels)
42 printf(
"Parse EXR error: %s\n", err);
54 data =
new float[width * height * channels];
66 printf(
"Load EXR error: %s\n", err);
71 float **images = (
float**) image.
images;
73 int nPixels = width * height;
74 for (
int i = 0; i < nPixels; i++){
75 int index = i * channels;
77 data[index ] = images[2][i];
78 data[index + 1] = images[1][i];
79 data[index + 2] = images[0][i];
96 int height,
int channels = 3)
103 const char* channel_names[] = {
"B",
"G",
"R"};
105 std::vector< float* > images;
106 for(
int i = 0; i < channels; i++) {
107 float *tmp =
new float[width * height];
108 images.push_back(tmp);
111 int nPixels = width * height;
112 for (
int i = 0; i < nPixels; i++){
113 int index = i * channels;
115 for(
int j = 0; j < channels; j++) {
116 images[j][i] = data[index + j];
121 image_ptr[0] = &(images[2][0]);
122 image_ptr[1] = &(images[1][0]);
123 image_ptr[2] = &(images[0][0]);
126 image.
images = (
unsigned char**)image_ptr;
140 printf(
"Save EXR err: %s\n", err);
144 for(
int i = 0; i < channels; i++) {
157 #endif //PIC_DISABLE_TINY_EXR int * requested_pixel_types
Definition: filter_radial_basis_function.hpp:78
int ParseMultiChannelEXRHeaderFromFile(EXRImage *image, const char *filename, const char **err)
Definition: filter_radial_basis_function.hpp:10831
int width
Definition: filter_radial_basis_function.hpp:83
int SaveMultiChannelEXRToFile(const EXRImage *image, const char *filename, const char **err)
Definition: filter_radial_basis_function.hpp:10155
int FreeEXRImage(EXRImage *exrImage)
Definition: filter_radial_basis_function.hpp:10783
T * delete_vec_s(T *data)
delete_vec_s
Definition: std_util.hpp:138
PIC_INLINE bool WriteEXR(std::string nameFile, float *data, int width, int height, int channels=3)
WriteEXR.
Definition: exr_tiny.hpp:95
Definition: filter_radial_basis_function.hpp:66
void InitEXRImage(EXRImage *exrImage)
Definition: filter_radial_basis_function.hpp:10770
PIC_INLINE float * ReadEXR(std::string nameFile, float *data, int &width, int &height, int &channels)
Definition: exr_tiny.hpp:33
#define PIC_INLINE
Definition: base.hpp:33
const char ** channel_names
Definition: filter_radial_basis_function.hpp:72
int num_channels
Definition: filter_radial_basis_function.hpp:71
unsigned char ** images
Definition: filter_radial_basis_function.hpp:74
int LoadMultiChannelEXRFromFile(EXRImage *image, const char *filename, const char **err)
Definition: filter_radial_basis_function.hpp:9013
Definition: bilateral_separation.hpp:25
#define TINYEXR_PIXELTYPE_HALF
Definition: filter_radial_basis_function.hpp:54
int * pixel_types
Definition: filter_radial_basis_function.hpp:75
int height
Definition: filter_radial_basis_function.hpp:84