ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Exibir imagem TIF em um TImage

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
yywander
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 22 de Março de 2006
Mensagens: 123

MensagemEnviada: Seg Abr 13, 2009 11:32 am    Assunto: Exibir imagem TIF em um TImage Responder com Citação

Bom dia amigos!
Venho recorrer a vocês do forum para verificarmos uma dificuldades que tenho em manipular imagens com o delphi... Mas particularmenete neste momento com a imagem no formato TIF.
Tenho alguns arquivos que podem estar num local no HD ou Banco de dados e tenho que imprimi-las.
Estou usando:
Delphi7
QuickReport
Obs.: Como o delphi trabalha com TBitmap, entao estive pesquisando e econtrei uma rotina para conversao de tiff para bmp, entao ficou blz, mas fazendo teste percebi que nao são todas as imagens que este função funciona...
segue funções:
Código:
function TqrDocumento.ReadTiffIntoBitmap(Filename: String): TBitmap;
var
 OpenTiff: PTIFF;
 FirstPageWidth,FirstPageHeight: Cardinal;
 FirstPageBitmap: TBitmap;
begin
  OpenTiff:=TIFFOpen(Filename,'r');
  TIFFGetField(OpenTiff,TIFFTAG_IMAGEWIDTH,@FirstPageWidth);
  TIFFGetField(OpenTiff,TIFFTAG_IMAGELENGTH,@FirstPageHeight);
  FirstPageBitmap:=TBitmap.Create;
  FirstPageBitmap.PixelFormat:=pf32bit;
  FirstPageBitmap.Width:=FirstPageWidth;
  FirstPageBitmap.Height:=FirstPageHeight;
  TIFFReadRGBAImage(OpenTiff,FirstPageWidth,FirstPageHeight,
  FirstPageBitmap.Scanline[FirstPageHeight-1],0);
  TIFFClose(OpenTiff);
  TIFFReadRGBAImageSwapRB(FirstPageWidth,FirstPageheight,
  FirstPageBitmap.Scanline[FirstPageHeight-1]);
  Result:=FirstPageBitmap;
end;

procedure TqrDocumento.TIFFReadRGBAImageSwapRB(Width, Height: Cardinal;
  Memory: Pointer);
//{$IFDEF DELPHI_5}
type
PCardinal = ^Cardinal;
//{$ENDIF}
var
 m: PCardinal;
 n: Cardinal;
 o: Cardinal;
begin
  m:=Memory;
  for n:=0 to Width*Height-1 do
  begin
    o:=m^;
    m^:= (o and $FF00FF00) or {G and A}
   ((o and $00FF0000) shr 16) or {B}
   ((o and $000000FF) shl 16); {R}
   Inc(m);
  end;
end;


Tive que baixar uma unit LibTiffDelphi e adicionar ao projeto pra funcionar.

queria saber se tem como melhorar esta rotina.http://www.torry.net/vcl/graphics/tiff/LibTiffDelphi_Full.zip
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB