0

我正在一个项目中处理图像,我需要检查图像的内容,以确保格式有效(例如: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
4

0 回答 0