IccMAX 2.1.27
Color Profile Tools
Loading...
Searching...
No Matches
iccTiffDump.cpp File Reference
#include <stdio.h>
#include "IccCmm.h"
#include "IccUtil.h"
#include "IccDefs.h"
#include "IccProfLibVer.h"
#include "IccApplyBPC.h"
#include "TiffImg.h"
+ Include dependency graph for iccTiffDump.cpp:

Go to the source code of this file.

Data Structures

struct  IdList
 

Macros

#define UNKNOWNID   0xffffffff
 

Functions

const char * GetId (unsigned long nId, IdList *pIdList)
 
int main (int argc, icChar *argv[])
 
void Usage ()
 

Variables

IdList compression_types []
 
IdList photo_types []
 
IdList planar_types []
 

Data Structure Documentation

◆ IdList

struct IdList
Data Fields
unsigned long nId
char const *const szName

Macro Definition Documentation

◆ UNKNOWNID

#define UNKNOWNID   0xffffffff

Function Documentation

◆ GetId()

const char * GetId ( unsigned long  nId,
IdList pIdList 
)
111{
112 for (;pIdList->nId != nId && pIdList->nId != UNKNOWNID; pIdList++);
113 return pIdList->szName;
114}
unsigned long nId
Definition iccTiffDump.cpp:81
#define UNKNOWNID
Definition iccTiffDump.cpp:84
char const *const szName
Definition iccTiffDump.cpp:82

References IdList::nId, and IdList::szName.

Referenced by main().

+ Here is the caller graph for this function:

◆ main()

int main ( int  argc,
icChar argv[] 
)
125{
126 int minargs = 1;
127 if (argc <= minargs) {
128 Usage();
129 return -1;
130 }
131
132 CTiffImg SrcImg;
133 if (!SrcImg.Open(argv[1])) {
134 printf("\nFile [%s] cannot be opened.\n", argv[1]);
135 return false;
136 }
137
138 printf("-------------------->Tiff Image Dump<---------------------------\n");
139 printf("Filename: %s\n", argv[1]);
140 printf("Size: (%d x %d) pixels, (%.2lf\" x %.2lf\")\n",
141 SrcImg.GetWidth(), SrcImg.GetHeight(),
142 SrcImg.GetWidthIn(), SrcImg.GetHeightIn());
143 printf("Planar: %s\n", GetId(SrcImg.GetPlanar(), planar_types));
144 printf("BitsPerSample: %d\n", SrcImg.GetBitsPerSample());
145 printf("SamplesPerPixel: %d\n", SrcImg.GetSamples());
146 int nExtra = SrcImg.GetExtraSamples();
147 if (nExtra)
148 printf("ExtraSamples: %d\n", nExtra);
149 printf("Photometric: %s\n", GetId(SrcImg.GetPhoto(), photo_types));
150 printf("BytesPerLine: %d\n", SrcImg.GetBytesPerLine());
151 printf("Resolution: (%lf x %lf) pixels per/inch\n", SrcImg.GetXRes(), SrcImg.GetYRes());
152 printf("Compression: %s\n", GetId(SrcImg.GetCompress(), compression_types));
153
154 unsigned char *pProfMem = nullptr;
155 unsigned int nLen = 0;
156 if (SrcImg.GetIccProfile(pProfMem, nLen)) {
157 printf("Profile: Embedded\n");
158
159 // Optional profile export
160 if (argc > 2 && pProfMem && nLen > 0) {
161 FILE *fp = fopen(argv[2], "wb");
162 if (fp) {
163 fwrite(pProfMem, 1, nLen, fp);
164 fclose(fp);
165 printf("ICC profile saved to: %s\n", argv[2]);
166 } else {
167 fprintf(stderr, "Failed to write ICC profile to %s\n", argv[2]);
168 }
169 }
170
171 // Profile description and metadata
172 CIccProfile *pProfile = OpenIccProfile(pProfMem, nLen);
173 if (pProfile) {
174 icHeader *pHdr = &pProfile->m_Header;
175 CIccInfo Fmt;
176
177 if (pHdr->colorSpace)
178 printf(" Color Space: %s\n", Fmt.GetColorSpaceSigName(pHdr->colorSpace));
179 if (pHdr->pcs)
180 printf(" Colorimetric PCS: %s\n", Fmt.GetColorSpaceSigName(pHdr->pcs));
181 if (pHdr->spectralPCS) {
182 printf(" Spectral PCS: %s\n", Fmt.GetSpectralColorSigName(pHdr->spectralPCS));
183 if (pHdr->spectralRange.start || pHdr->spectralRange.end || pHdr->spectralRange.steps) {
184 printf(" Spectral Range: start=%.1fnm, end=%.1fnm, steps=%d\n",
187 pHdr->spectralRange.steps);
188 }
189 if (pHdr->biSpectralRange.start || pHdr->biSpectralRange.end || pHdr->biSpectralRange.steps) {
190 printf(" BiSpectral Range: start=%.1fnm, end=%.1fnm, steps=%d\n",
193 pHdr->biSpectralRange.steps);
194 }
195 }
196
197 CIccTag *pDesc = pProfile->FindTag(icSigProfileDescriptionTag);
198 if (pDesc) {
199 if (pDesc->GetType() == icSigTextDescriptionType) {
201 printf(" Description: %s\n", pText->GetText());
202 }
203 else if (pDesc->GetType() == icSigMultiLocalizedUnicodeType) {
205 if (pStrs->m_Strings) {
206 CIccMultiLocalizedUnicode::iterator text = pStrs->m_Strings->begin();
207 if (text != pStrs->m_Strings->end()) {
208 std::string line;
209 text->GetText(line);
210 printf(" Description: %s\n", line.c_str());
211 }
212 }
213 }
214 }
215 }
216 } else {
217 printf("Profile: None\n");
218 }
219
220 SrcImg.Close();
221 return 0;
222}
icSpectralRange spectralRange
Definition icProfileHeader.h:2063
icColorSpaceSignature colorSpace
Definition icProfileHeader.h:2048
icUInt16Number steps
Definition icProfileHeader.h:1469
icSpectralColorSignature spectralPCS
Definition icProfileHeader.h:2062
icFloat16Number start
Definition icProfileHeader.h:1467
@ icSigMultiLocalizedUnicodeType
Definition icProfileHeader.h:549
@ icSigTextDescriptionType
Definition icProfileHeader.h:566
icFloat16Number end
Definition icProfileHeader.h:1468
@ icSigProfileDescriptionTag
Definition icProfileHeader.h:452
icSpectralRange biSpectralRange
Definition icProfileHeader.h:2064
icColorSpaceSignature pcs
Definition icProfileHeader.h:2049
Definition icProfileHeader.h:2043
class ICCPROFLIB_API CIccProfile
Definition IccPcc.h:80
CIccProfile * OpenIccProfile(const icChar *szFilename, bool bUseSubProfile)
Definition IccProfile.cpp:3387
ICCPROFLIB_API icFloat32Number icF16toF(icFloat16Number num)
Definition IccUtil.cpp:629
void Usage()
Definition iccTiffDump.cpp:116
const char * GetId(unsigned long nId, IdList *pIdList)
Definition iccTiffDump.cpp:110
IdList planar_types[]
Definition iccTiffDump.cpp:86
IdList photo_types[]
Definition iccTiffDump.cpp:93
IdList compression_types[]
Definition iccTiffDump.cpp:101
Definition IccUtil.h:303
const icChar * GetSpectralColorSigName(icSpectralColorSignature sig)
Definition IccUtil.cpp:1769
const icChar * GetColorSpaceSigName(icColorSpaceSignature sig)
Definition IccUtil.cpp:1640
Definition IccTagBasic.h:108
virtual icTagTypeSignature GetType() const
Definition IccTagBasic.h:131
Definition IccTagBasic.h:481
const icChar * GetText() const
Definition IccTagBasic.h:497
Definition IccTagBasic.h:1229
CIccMultiLocalizedUnicode * m_Strings
Definition IccTagBasic.h:1260
Definition TiffImg.h:84
float GetYRes()
Definition TiffImg.h:110
bool Open(const char *szFname)
Definition TiffImg.cpp:228
void Close()
Definition TiffImg.cpp:104
unsigned int GetBitsPerSample()
Definition TiffImg.h:103
unsigned int GetWidth()
Definition TiffImg.h:99
unsigned int GetPlanar()
Definition TiffImg.h:108
double GetHeightIn()
Definition TiffImg.h:102
double GetWidthIn()
Definition TiffImg.h:101
float GetXRes()
Definition TiffImg.h:109
unsigned int GetPhoto()
Definition TiffImg.cpp:391
unsigned int GetSamples()
Definition TiffImg.h:105
unsigned int GetExtraSamples()
Definition TiffImg.h:106
unsigned int GetHeight()
Definition TiffImg.h:100
unsigned int GetBytesPerLine()
Definition TiffImg.h:112
bool GetIccProfile(unsigned char *&pProfile, unsigned int &nLen)
Definition TiffImg.cpp:410
unsigned int GetCompress()
Definition TiffImg.h:107

References icHeader::biSpectralRange, CIccProfile, CTiffImg::Close(), icHeader::colorSpace, compression_types, icSpectralRange::end, CTiffImg::GetBitsPerSample(), CTiffImg::GetBytesPerLine(), CIccInfo::GetColorSpaceSigName(), CTiffImg::GetCompress(), CTiffImg::GetExtraSamples(), CTiffImg::GetHeight(), CTiffImg::GetHeightIn(), CTiffImg::GetIccProfile(), GetId(), CTiffImg::GetPhoto(), CTiffImg::GetPlanar(), CTiffImg::GetSamples(), CIccInfo::GetSpectralColorSigName(), CIccTagTextDescription::GetText(), CIccLocalizedUnicode::GetText(), CIccTag::GetType(), CTiffImg::GetWidth(), CTiffImg::GetWidthIn(), CTiffImg::GetXRes(), CTiffImg::GetYRes(), icF16toF(), icSigMultiLocalizedUnicodeType, icSigProfileDescriptionTag, icSigTextDescriptionType, CIccTagMultiLocalizedUnicode::m_Strings, CTiffImg::Open(), OpenIccProfile(), icHeader::pcs, photo_types, planar_types, icHeader::spectralPCS, icHeader::spectralRange, icSpectralRange::start, icSpectralRange::steps, and Usage().

+ Here is the call graph for this function:

◆ Usage()

void Usage ( )
117{
118 printf("iccTiffDump built with IccProfLib version " ICCPROFLIBVER "\n\n");
119 printf("Usage: iccTiffDump tiff_file {exported_icc_file}\n\n");
120}
#define ICCPROFLIBVER
Definition IccProfLibVer.h:2

Variable Documentation

◆ compression_types

IdList compression_types[]
Initial value:
= {
{COMPRESSION_NONE, "None"},
{COMPRESSION_LZW, "LZW"},
{COMPRESSION_JPEG, "JPEG"},
{COMPRESSION_DEFLATE, "Deflate"},
{COMPRESSION_ADOBE_DEFLATE,"Deflate"},
{UNKNOWNID, "Unknown"},
}
101 {
102 {COMPRESSION_NONE, "None"},
103 {COMPRESSION_LZW, "LZW"},
104 {COMPRESSION_JPEG, "JPEG"},
105 {COMPRESSION_DEFLATE, "Deflate"},
106 {COMPRESSION_ADOBE_DEFLATE,"Deflate"},
107 {UNKNOWNID, "Unknown"},
108};

Referenced by main().

◆ photo_types

IdList photo_types[]
Initial value:
= {
{PHOTO_MINISWHITE, "Min Is White"},
{PHOTO_MINISBLACK, "Min Is Black"},
{PHOTO_CIELAB, "CIELab"},
{PHOTO_ICCLAB, "IccLab"},
{UNKNOWNID, "Unknown"},
}
#define PHOTO_CIELAB
Definition TiffImg.h:80
#define PHOTO_MINISBLACK
Definition TiffImg.h:78
#define PHOTO_ICCLAB
Definition TiffImg.h:81
#define PHOTO_MINISWHITE
Definition TiffImg.h:79
93 {
94 {PHOTO_MINISWHITE, "Min Is White"},
95 {PHOTO_MINISBLACK, "Min Is Black"},
96 {PHOTO_CIELAB, "CIELab"},
97 {PHOTO_ICCLAB, "IccLab"},
98 {UNKNOWNID, "Unknown"},
99};

Referenced by main().

◆ planar_types

IdList planar_types[]
Initial value:
= {
{0, "Interleaved samples"},
{PLANARCONFIG_CONTIG, "Interleaved samples"},
{PLANARCONFIG_SEPARATE, "Samples in separate planes"},
{UNKNOWNID, "Unknown"},
}
86 {
87 {0, "Interleaved samples"},
88 {PLANARCONFIG_CONTIG, "Interleaved samples"},
89 {PLANARCONFIG_SEPARATE, "Samples in separate planes"},
90 {UNKNOWNID, "Unknown"},
91};

Referenced by main().