yywander Aprendiz

Registrado: Quarta-Feira, 22 de Março de 2006 Mensagens: 123
|
Enviada: Seg Abr 13, 2009 11:32 am Assunto: Exibir imagem TIF em um TImage |
|
|
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 |
|