Funções


Cor

long imEncodeColor(unsigned char red, unsigned char green, unsigned char blue);

Converte uma cor no formato RGB para o formato interno da IM. (É idêntica a função equivalente da biblioteca CD.)

void imDecodeColor(unsigned char* red, unsigned char* green, unsigned char* blue, long color);

Converte uma cor no formato interno da IM para o formato RGB. (É idêntica a função equivalente da biblioteca CD.)


Informação

int imFileFormat(char *filename, int* format);

Informa o formato de um determinado arquivo. Retorna IM_ERR_NONE, IM_ERR_OPEN ou IM_ERR_READ. format recebe uma combinação do identificardor do formato com o identificador de compressão. Para extrair o identificador do formato faça (format & 0x00FF), para extrair o identificador de compressão faça (format & 0xFF00).

int imImageInfo(char *filename, int *width, int *height, int *type, int *pal_size);

Retorna informações sobre a imagem em determinado arquivo. Retorna IM_ERR_NONE, IM_ERR_OPEN, IM_ERR_READ, IM_ERR_FORMAT, IM_ERR_TYPE ou IM_ERR_COMP.


I/O

int imLoadRGB(char *filename, unsigned char *red, unsigned char *green, unsigned char *blue);

Lê uma imagem RGB de um determinado arquivo. É necessário usar a função imImageInfo para poder reservar memória para os ponteiros red, green e blue antes de ler a imagem. Retorna IM_ERR_NONE, IM_ERR_OPEN, IM_ERR_READ, IM_ERR_FORMAT, IM_ERR_TYPE ou IM_ERR_COMP.

int imSaveRGB(int width, int height, int format, unsigned char *red, unsigned char *green, unsigned char *blue, char *filename);

Salva uma imagem RGB em determinado arquivo e formato. Retorna IM_ERR_NONE, IM_ERR_OPEN, IM_ERR_WRITE, IM_ERR_FORMAT, IM_ERR_TYPE ou IM_ERR_COMP. Para especificar o formato realize um "ou" binário entre o identificador do formato e o identificador da compressão. Ex: (IM_BMP | IM_COMPRESSED)

int imLoadMap(char *filename, unsigned char *map, long *colors);

Lê uma imagem indexada de um determinado arquivo. É necessário usar a função imImageInfo para poder reservar memória para os ponteiros map e color. Retorna IM_ERR_NONE, IM_ERR_OPEN, IM_ERR_READ, IM_ERR_FORMAT, IM_ERR_TYPE ou IM_ERR_COMP.

int imSaveMap(int width, int height, int format, unsigned char *map, int pal_size, long *colors, char * filename);

Salva uma imagem indexada em determinado arquivo e formato. Retorna IM_ERR_NONE, IM_ERR_OPEN, IM_ERR_WRITE, IM_ERR_FORMAT, IM_ERR_TYPE ou IM_ERR_COMP. Para especificar o formato realize um "ou" binário entre o identificador do formato e o identificador da compressão. Ex: (IM_BMP | IM_COMPRESSED)


Conversão

void imRGB2Map(int width, int height, unsigned char *red, unsigned char *green, unsigned char *blue, unsigned char *map, int pal_size, long *colors);

Converte uma imagem RGB em uma imagem indexada. A imagem resultante é do mesmo tamanho da imagem original e sua tabela de cores pode conter até pal_size cores, mas sempre menor que 256. É necessário reservar memória para os ponteiros map e colors antes de converter a imagem.

void imMap2RGB(int width, int height, unsigned char *map, int pal_size, long *colors, unsigned char *red, unsigned char *green, unsigned char *blue);

Converte uma imagem indexada em uma imagem RGB. A imagem resultante é do mesmo tamanho da imagem original. É necessário reservar memória para os ponteiros red, green e blue antes de converter a imagem.

void imRGB2Gray(int width, int height, unsigned char *red, unsigned char *green, unsigned char *blue, unsigned char *map, long *grays);

Converte uma imagem RGB em uma imagem indexada com 256 tons de cinza. A imagem resultante é do mesmo tamanho da imagem original e sua tabela de cores contem 256 valores. É necessário reservar memória para os ponteiros map e grays antes de converter a imagem.

void imMap2Gray(int width, int height, unsigned char *color_map, int pal_size, long *colors, unsigned char *gray_map, long *grays);

Converte uma imagem indexada em uma imagem indexada com 256 tons de cinza. A imagem resultante é do mesmo tamanho da imagem original e sua tabela de cores contem 256 valores. É necessário reservar memória para os ponteiros gray_map e grays antes de converter a imagem.


Tamanho

void imResize(int src_width, int src_height, unsigned char *src_map, int dst_width, int dst_height, unsigned char *dst_map);

Realiza uma mudança no tamanho da imagem usando interpolação bilinear. Para usar em imagens RGB chame a função uma vez para cada componente. É necessário reservar memória para o ponteiro dst_map antes de chamar a função.

void imStretch(int src_width, int src_height, unsigned char *src_map, int dst_width, int dst_height, unsigned char *dst_map);

Realiza uma mudança no tamanho da imagem usando replicação de pixels. Para usar em imagens RGB chame a função uma vez para cada componente. É necessário reservar memória para o ponteiro dst_map antes de chamar a função. NOTA: Se a imagem for indexada por uma palette não uniforme a imagem resultante pode possuirá índices combinados que não representarão corretamente a imagem.


Controle

char* imVersion(void);

Retorna uma string que contém o número da versão da biblioteca, por exemplo "1.0".

int imRegisterCallback(imCallback cb, int id);

Permite registrar callbacks que são chamadas durante o processamento da imagem, seja leitura ou escrita. Callbacks pré-definidas:

(Embora no momento só existam estas duas callbacks, no futuro teremos callbacks específicas para cada formato.)