16 const char* pszSrcFile,
17 const char* pszContentType,
18 const char* pszThumbnailFile,
26 for( ; *pszContentType; pszContentType++) {
27 if (*pszContentType ==
'/')
34#define IMAGE_UNKNOWN 0
40 if (String::compareNoCase(pszContentType, L
"jpeg") == 0
41 || String::compareNoCase(pszContentType, L
"pjpeg") == 0)
43 else if (String::compareNoCase(pszContentType, L
"gif") == 0)
45 else if (String::compareNoCase(pszContentType, L
"png") == 0)
51 gdImagePtr inImage =
NULL;
52 FILE* inFile = fopen(pszSrcFile, L
"rb");
58 inImage = gdImageCreateFromJpeg(inFile);
61 inImage = gdImageCreateFromGif(inFile);
64 inImage = gdImageCreateFromPng(inFile);
76 if (gdImageSX(inImage) > nSize || gdImageSY(inImage) > nSize) {
78 if (gdImageSX(inImage) >= gdImageSY(inImage))
79 fRate = (double)nSize / (
double)gdImageSX(inImage);
81 fRate = (double)nSize / (
double)gdImageSY(inImage);
83 nWidth = (int)(((
double)gdImageSX(inImage)) * fRate);
84 nHeight = (int)(((
double)gdImageSY(inImage)) * fRate);
87 nWidth = gdImageSX(inImage);
88 nHeight = gdImageSY(inImage);
91 gdImagePtr outImage = gdImageCreateTrueColor(nWidth, nHeight);
93 gdImageDestroy(inImage);
111 FILE* outFile = fopen(pszThumbnailFile, L
"wb");
113 gdImageDestroy(inImage);
114 gdImageDestroy(outImage);
117 gdImageJpeg(outImage, outFile, -1);
120 gdImageDestroy(inImage);
121 gdImageDestroy(outImage);