我正在一个项目中处理图像,我需要检查图像的内容,以确保格式有效(例如:png、jpg 等)。所以,我知道我可以使用幻数或文件签名。我曾尝试使用 libmagic-dev,但没有用(我有 Mac)。我尝试使用源代码(我在项目中创建了一个库和引用),但也没有用。我想在 C 中做到这一点。有人可以说我有办法得到这个吗?
int check_ext(char* filename) {
magic_t handle = magic_open(MAGIC_NONE|MAGIC_COMPRESS);
magic_load(handle, NULL);
fgets(filename, sizeof(filename), stdin);
size_t ln = strlen(filename) - 1;
if (filename[ln] == '\n') {
filename[ln] = '\0';
}
const char * type = magic_file(handle, filename);
if (type) {
if(strlen(type) > 3)
return 0;
else if(strcasecmp(type, "png") == 0)
return 1;
else if(strcasecmp(type, "bmp") == 0)
return 1;
else if(strcasecmp(type, "ppm") == 0)
return 1;
else if(strcasecmp(type, "pgm") == 0)
return 1;
else
return 0;
} else {
return 0;
}
magic_close(handle);
return 0;
}
错误:
Undefined symbols for architecture x86_64:
"_magic_file", referenced from:
_check_ext in arguments.c.o
"_magic_load", referenced from:
_check_ext in arguments.c.o
"_magic_open", referenced from:
_check_ext in arguments.c.o