Perfectly Clear SDK Documentation  9.1.1.325
PFCImageFile.h
Go to the documentation of this file.
1 
3 #ifndef PFCIMAGEFILE_H
4 #define PFCIMAGEFILE_H
5 
6 #ifdef WIN32
7 #if defined(PFCIMAGEFILEDLL_LIBRARY)
8 # define PFCIMAGEFILEDLLSHARED_EXPORT __declspec(dllexport)
9 #else
10 # define PFCIMAGEFILEDLLSHARED_EXPORT __declspec(dllimport)
11 #endif
12 #else
13 # define PFCIMAGEFILEDLLSHARED_EXPORT
14 #endif
15 
16 #include <string>
17 
19 typedef enum {
25 
59 class PFCIMAGEFILEDLLSHARED_EXPORT PFCImageFile
60 {
61 
62 public:
64  typedef enum {
65  PFC_JPEG = 1,
67  PFC_WEBP
68  } PFC_FILETYPE;
69 
73  PFCImageFile();
80  PFCImageFile(int width, int height, const PFCImageFile &model);
88  PFCImageFile(int width, int height, int bytes_per_pixel, int stride);
89  ~PFCImageFile();
97  PFC_FILE_LOAD_STATUS LoadImageFile(const char *filename, bool bConvertToSRGB, const char *iccFolderPath);
98 
107  PFC_FILE_LOAD_STATUS LoadImageFile(const char *filename, PFC_FILETYPE type, bool bConvertToSRGB, const char *iccFolderPath);
108 
117  PFC_FILE_LOAD_STATUS ExpandImageBuffer(char *data, long size, PFC_FILETYPE type, bool bConvertToSRGB, const char *iccFolderPath);
118 
127  int CompressImageBuffer(unsigned char** destination, PFC_FILETYPE type, int quality, bool bConvertToOriginalColorSpace, bool bEmbedOriginalMetadata);
128 
136  bool SaveImageFile(const char *filename, int quality, bool bConvertToOriginalColorSpace, bool bEmbedOriginalMetadata);
137 
147  bool SaveImageFile(const char *filename, PFC_FILETYPE type, int quality, bool bConvertToOriginalColorSpace, bool bEmbedOriginalMetadata);
148 
149  void AllocBuffer(int width, int height, int bytes_per_pixel, int stride);
150  int pfcImageFormat();
151  int exifOrientation();
152 
158  unsigned char *raw_image;
160  int width;
162  int height;
166  int stride;
169 
170 private:
171  void init();
172 
173  bool ConvertToSRGB();
174  bool ConvertFromSRGBToOriginal();
175  bool applyColorTransform(void* hTransform);
176 
177  unsigned char* allocDataFromFile(const char* filename, long& size);
178 
179  PFC_FILE_LOAD_STATUS read_jpeg_file( const char *filename, bool bConvertToSRGB, const char *iccFolderPath );
180  int write_jpeg_file( const char *filename, int quality, bool bConvertToOriginalColorSpace, bool bEmbedOriginalMetadata );
181  int compress_jpeg_buffer(unsigned char** destination, int quality, bool bConvertToOriginalColorSpace, bool bEmbedOriginalMetadata );
182  PFC_FILE_LOAD_STATUS expand_jpeg( unsigned char *data, long size, bool bConvertToSRGB, const char *iccFolderPath );
183 
184  PFC_FILE_LOAD_STATUS read_rawdump( const char *filename);
185  PFC_FILE_LOAD_STATUS read_png( const char *filename);
186  PFC_FILE_LOAD_STATUS expand_png(char* data, long size);
187 
188  PFC_FILE_LOAD_STATUS read_webp(const char* filename);
189  PFC_FILE_LOAD_STATUS expand_webp(char* data, long size);
190  int compress_webp(unsigned char** data, float quality);
191  bool write_webp(const char *filename, float quality);
192 
193  bool write_rawdump(const char *basename); // adds dump params to the name: basename.hex -> basename-<w>-<h>-<bpp>.hex
194  bool write_png(const char *filename, bool bConvertToOriginalColorSpace);
195  int compress_png(unsigned char** data, bool bConvertToOriginalColorSpace);
196 
197  void read_exif_data(unsigned char *data, long size, unsigned char **buf, unsigned int *bufLen, bool bFillReferencedICC, int *iEXIFOrientation);
198 
199  void* hTransformToSRGB;
200  void* hTransformSRGBToOriginal;
201  unsigned int embeddedICCLen;
202  unsigned char* embeddedICCBuf;
203 
204  bool bIgnoreNonembeddedIcc; // TODO:
205 
206  std::string originalPath;
207  void* originalExifData;
208 
210  int jpeg_color_space;
212  int m_color_space; //
213  int m_iEXIFOrientation;
214 };
215 
216 #endif // PFCIMAGEFILE_H
Error: failed to convert to sRGB.
Definition: PFCImageFile.h:23
Error: unsupported file.
Definition: PFCImageFile.h:22
Error.
Definition: PFCImageFile.h:21
PFCImageFile Class to encapsulate file handling.
Definition: PFCImageFile.h:59
unsigned char * raw_image
Definition: PFCImageFile.h:158
PFC_FILE_LOAD_STATUS
Return status values.
Definition: PFCImageFile.h:19
Success.
Definition: PFCImageFile.h:20