Размер изображения почвы - PullRequest
0 голосов
/ 19 ноября 2018

Могу ли я как-то получить размер изображения (любой поддержки SOIL)?

Я знаю, что в файлах изображений есть разные заголовки, которые определяют эти размеры.Но есть ли какая-нибудь функция от SOIL для получения размера изображения?

1 Ответ

0 голосов
/ 20 ноября 2018

SOIL_load_image() заполняет параметры ширины / высоты размерами изображения, хотя для этого загружается изображение полностью:

/**
    Loads an image from disk into an array of unsigned chars.
    Note that *channels return the original channel count of the
    image.  If force_channels was other than SOIL_LOAD_AUTO,
    the resulting image has force_channels, but *channels may be
    different (if the original image had a different channel
    count).
    \return 0 if failed, otherwise returns 1
**/
unsigned char*
    SOIL_load_image
    (
        const char *filename,
        int *width, int *height, int *channels,
        int force_channels
    );

Базовое stb_image.h имеет подпрограммы , которые не загружают полное изображение:

// get image dimensions & components without fully decoding
STBIDEF int      stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp);
STBIDEF int      stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp);
STBIDEF int      stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len);
STBIDEF int      stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user);

#ifndef STBI_NO_STDIO
STBIDEF int      stbi_info               (char const *filename,     int *x, int *y, int *comp);
STBIDEF int      stbi_info_from_file     (FILE *f,                  int *x, int *y, int *comp);
STBIDEF int      stbi_is_16_bit          (char const *filename);
STBIDEF int      stbi_is_16_bit_from_file(FILE *f);
#endif
...