108char *versionStrP = NULL;
112 stringJoinIP(&versionStrP,
"libgif ");
114 snprintf(buf,
sizeof(buf),
"%d.%d.%d", GIFLIB_MAJOR, GIFLIB_MINOR,
117 stringCopy(buf,
"4.1.6(?)",
sizeof(buf));
119 stringJoinIP(&versionStrP, buf);
124 struct jpeg_compress_struct cinfo = { 0 };
125 struct jpeg_error_mgr err = { 0 };
126 char buffer[JMSG_LENGTH_MAX];
127 cinfo.err = jpeg_std_error(&err);
128 err.msg_code = JMSG_VERSION;
129 (*err.format_message) ((j_common_ptr ) &cinfo, buffer);
131 if (!first) stringJoinIP(&versionStrP,
" : ");
133 stringJoinIP(&versionStrP,
"libjpeg ");
134 versionNumP = strtokSafe(buffer,
" ", &nextTokenP);
135 stringJoinIP(&versionStrP, versionNumP);
136 LEPT_FREE(versionNumP);
138 #if defined(LIBJPEG_TURBO_VERSION)
142 #define l_xstr(s) l_str(s)
144 snprintf(buf,
sizeof(buf),
" (libjpeg-turbo %s)",
145 l_xstr(LIBJPEG_TURBO_VERSION));
146 stringJoinIP(&versionStrP, buf);
152 if (!first) stringJoinIP(&versionStrP,
" : ");
154 stringJoinIP(&versionStrP,
"libpng ");
155 stringJoinIP(&versionStrP, png_get_libpng_ver(NULL));
159 if (!first) stringJoinIP(&versionStrP,
" : ");
161 stringJoinIP(&versionStrP,
"libtiff ");
162 versionNumP = strtokSafe((
char *)TIFFGetVersion(),
" \n", &nextTokenP);
163 LEPT_FREE(versionNumP);
164 versionNumP = strtokSafe(NULL,
" \n", &nextTokenP);
165 LEPT_FREE(versionNumP);
166 versionNumP = strtokSafe(NULL,
" \n", &nextTokenP);
167 stringJoinIP(&versionStrP, versionNumP);
168 LEPT_FREE(versionNumP);
172 if (!first) stringJoinIP(&versionStrP,
" : ");
174 stringJoinIP(&versionStrP,
"zlib ");
175 stringJoinIP(&versionStrP, ZLIB_VERSION);
182 if (!first) stringJoinIP(&versionStrP,
" : ");
184 stringJoinIP(&versionStrP,
"libwebp ");
185 val = WebPGetEncoderVersion();
186 snprintf(buf,
sizeof(buf),
"%d.%d.%d", val >> 16, (val >> 8) & 0xff,
188 stringJoinIP(&versionStrP, buf);
195 if (!first) stringJoinIP(&versionStrP,
" : ");
197 stringJoinIP(&versionStrP,
"libopenjp2 ");
198 version = opj_version();
199 stringJoinIP(&versionStrP, version);