IM
Biblioteca de Acesso à Arquivos de
Imagens Bitmaps
Versão 2.4
O objetivo desta biblioteca é ler e escrever imagens bitmaps em formatos raster, tais como BMP, PCX, GIF, TIF, etc... É dada única importância à imagens RGB de 24 bits por pixel (8 bits para cada componente) e imagens de 8 bits por pixel indexadas por uma palette. A palette é uma tabela de valores RGB com no máximo 256 elementos. Durante a leitura de determinados formatos são aceitos, dentro do possível, outros tipos de imagem, que são automaticamente convertidos para 24 ou 8 bpp.
A biblioteca foi gerada e testada nas seguintes plataformas: Linux (PC), AIX (RISC), IRIX (Silicon Graphics), Windows (PC), SunOS (SUN), e DOS (PC). No ambiente UNIX é usado o compilador GNU C (gcc), no DOS usa-se o Watcom C/C++ com DOS4GW, e no Windows são geradas bibliotecas para Visual C++ 2.0, 4.0 e 5.0, Borland C++ 4.5 e 5.0, e Watcom C/C++ 10.6. No ambiente Windows é gerada também uma biblioteca dinâmica (DLL).
A IM possui total compatibilidade com imagens cliente do CD (Canvas Draw). Fornecendo assim armazenamento persistente para imagens cliente.
A adoção de formatos de arquivo conhecidos e bem difundidos, e a independência do formato escolhido tornam a IM um poderosa bilbioteca de acesso a arquivos de imagem.
Fevereiro de 2000 - Versão 2.4. Mudança do tratamento da compressao LZW nos formatos TIFF e GIF. Agora a compressao não é mais a default.
Junho de 98 - Versão 2.3. Corrigido função close do driver de acesso a arquivo em memória. Atualizada biblioteca JPEG para 6b. Também foi corrigido um problema com a leitura de alguns arquivos JPEG.
Novembro de 97 - Versão 2.2. Modificada a definição da callback de contador para informar em um parâmetro, qual o tipo de acesso sendo realizado, leitura ou escrita. Definido o tipo imCallback para facilitar o type casting ao usar a função imRegisterCallback. Corrigido um problema com o makefile no UNIX que gerava erros no link em algumas plataformas.
Outubro de 97 - Versão 2.1. Corrigido um problema de liberação de memória interna durante a leitura de imagens Map em arquivos TIFF. A conversão RGB para Map agora é feita usando o algoritmo implementado pela LibJPEG. O algoritmo da imResize foi melhorado para o caso em que o tamanho está sendo reduzido e não ampliado. Corrigido um problema com as funções imImageInfo e imFileFormat quando o arquivo não fornecido não está em um formato reconhecido pela IM, havia um erro no formato TGA que fazia com essas funções acessassem uma área de memória inválida.
Setembro de 97 - Versão 2.0, a biblioteca foi praticamente reescrita para impementar uma nova estrutura que permita uma maior flexibiblidade a mesma, simplificando o acrescimo de novos formatos. Os formatos TGA, PCL, JPEG e LED foram acresentados a lista de formatos suportados e foram acrescentadas novas funções: imMap2RGB, imRGB2Gray, imMap2Gray, imResize, imStretch.
Junho de 96 - Versão 1.1, pequenas correções para melhor a portabilidade. Códigos de retorno foram modificados. Foram criados identificadores para códigos de retorno e parâmetros pré-definidos. Manual on-line concluído.
Outubro de 95 - Versão 1.0 concluída
Concluir os formatos XBM e PCL.
Corrigir um bug na compressão RLE do TGA e do PCX para imagens de 512x512.
Estão em nossos planos:
- Os formatos: Windows Icons (.ICO), MacPaint, RLE, PNG, PPM e RAW (este último usa um arquivo adicional para se saber o tipo da imagem e onde ela esta' guardada no arquivo).
- Leitura e escrita parcial de imagens.
- Leitura e escrita de múltiplas imagens em um mesmo arquivo, para os formatos que suportam essa funcionalidade.
- Leitura de uma versão reduzida da imagem no arquivo (thumbnail).
- Outras callbacks específicas de cada formato. (SGI - image name, TIF - image description, GIF - background color, GeoTIFF - vários)
- Implementar os algoritmos de compressão/descompressão dos formatos RAS e SGI que estão incompletos.
Ao detectar algum erro, envie mensagem para Antonio E. Scuri (scuri@tecgraf.puc-rio.br) com informações sobre o erro explicitando o(s) formato(s) e a(s) plataforma(s) em que ocorreu.
Este trabalho foi desenvolvido no TeCGraf, através do convênio PETROBRAS/CENPES.
O acesso ao formato TIFF é implementado usando-se a bliblioteca LibTIFF, versão 3.4 beta 37, desenvolvida por Sam Leffer da Silicon Graphics, ver em http://www-mipl.jpl.nasa.gov/~ndr/tiff/ ou em ftp://sgi.com/graphics/tiff.
O acesso ao formato JPEG é implementado usando-se a bliblioteca LibJPEG, versão 6b, desenvolvida pelo Independent JPEG Group, ver em ftp://ftp.uu.net/graphics/jpeg.
The Graphics Interchange Format is the Copyright property of CompuServe Incorporated. GIF is a Service Mark property of CompuServe Incorporated.
A Antonio Nabuco Tartarini pelo desenvolvimento dos formatos JPEG, TGA e XBM. A Erick de Moura Ferreira pela versão preliminar do driver PCL.
- Antonio E. Scuri (scuri@tecgraf.puc-rio.br) - Arquitetura e Implementação dos formatos BMP, PCX, TIFF, LED, GIF, SGI e RAS.
Este manual está disponível em http://www.tecgraf.puc-rio.br/manuais/im. As páginas foram criadas utilizando HTML 3.2 e JavaScript 1.1. Elas são melhor vistas e percorridas com Internet Explorer 4 (ou posterior) ou Netscape 4 (ou posterior). Embora sejam vistas no Netscape 3, não são vistas no Internet Explorer 3.
Usando o Microsoft Word 97 geramos uma versão impressa deste manual, que também está disponível em formato Adobe Acrobat (IM.PDF 1Mb).
Este manual foi criado usando o toolkit de criação de manuais ManJS, que pode ser encontrado em http://www.tecgraf.puc-rio.br/~scuri/manjs.