use strict; use warnings; use FindBin; load( $ARGV[0] ); use Inline C => config => inc => "-I$FindBin::Bin", libs => "-L$FindBin::Bin -lfreeimage"; use Inline C => <<'END_OF_C'; #include void load(char *fname) { // FreeImage_Initialise(FALSE); printf("%s\n", FreeImage_GetVersion()); FIBITMAP *im = FreeImage_Load(FreeImage_GetFileType(fname, 0), fname, 0); printf("%d\n", im); FITAG *tag = FreeImage_CreateTag(); FreeImage_SetTagKey(tag, "Urgency"); FreeImage_SetTagLength(tag, 2); FreeImage_SetTagCount(tag, 2); FreeImage_SetTagType(tag, FIDT_ASCII); FreeImage_SetTagValue(tag, "5"); printf("*\n"); FreeImage_SetMetadata(FIMD_IPTC, im, FreeImage_GetTagKey(tag), tag); printf("*\n"); FreeImage_DeleteTag(tag); FreeImage_Unload(im); // FreeImage_DeInitialise(); } END_OF_C __END__ >perl fitest.pl wiz.jpg 3.18.0 2733096 * >perl fitest.pl wiz.tif 3.18.0