![]() |
Re: Multipage bei Tiff-Dateien
Kein Problem.
Also die Variable row bekommt bei
Delphi-Quellcode:
den Wert.
LibTiffDelphi.TIFFGetField(OpenTiff2,TIFFTAG_IMAGELENGTH,row);
Es wird auch etwas gespeichert aber das wird so durcheinander gespeichert dass da kein Bild rauskommt. Bei
Delphi-Quellcode:
kommt schon ein Fehler, also der Rückgabewert ist -1 was ein Fehler ist denn es soll 1 rauskommen.
R2 := LibTiffDelphi.TIFFWriteScanline(OpenTiff,Buf,i,1);
|
Re: Multipage bei Tiff-Dateien
![]() |
Re: Multipage bei Tiff-Dateien
also, wo kommt denn das her ?
Delphi-Quellcode:
denn in deinem geposteten quellcode stehts ja nicht drin, oder ist dieser nur ein ausschnitt ?
LibTiffDelphi.TIFFGetField(OpenTiff2,TIFFTAG_IMAGELENGTH,row);
|
Re: Multipage bei Tiff-Dateien
OpenTiff2 ist ja die Quelldatei.
Mit dem Befehl LibTiffDelphi.TIFFGetField(OpenTiff2,TIFFTAG_PHOTO METRIC,Row); wird die Anzahl der Reihen von der Quelldatei geladen und in der Variable Row übergeben. So bekommt die Varable die Anzahl der Reihen von der Quelldatei damit man weiß wieviele Reihen "kopiert" werden soll. |
Re: Multipage bei Tiff-Dateien
Zitat:
in deiner geposteten btn methode
Delphi-Quellcode:
taucht doch der befehl gar nicht auf ...also wird er an anderer stelle verwendet ...
procedure TForm_Scan.Button1Click(Sender: TObject);
var i : integer; mFileName,mFileName2 : string; OpenTiff,OpenTiff2: PTIFF; buf : pointer; row,R1,R2 : integer; begin mFileName := 'F:\temp\gescannteBilder\BMPTiff1.tiff'; mFileName2 := 'F:\temp\gescannteBilder\BMPTiff2.tiff'; OpenTiff := TIFFOpen(mFileName,'a'); OpenTiff2 := TIFFOpen(mFileName2,'r'); buf := _TIFFmalloc(TIFFScanlineSize(OpenTiff)); For i := 0 To row - 1 do begin R1 := LibTiffDelphi.TIFFReadScanline(OpenTiff2,Buf,i,0); R2 := LibTiffDelphi.TIFFWriteScanline(OpenTiff,Buf,i,0); //ShowMessage(IntToStr(R1) + ' ' + IntToStr(R2)); end; TIFFWriteDirectory(OpenTiff); _TIFFfree(buf); TIFFClose(OpenTiff); TIFFClose(OpenTiff2); end; ich wollt nur wissen wo ? |
Re: Multipage bei Tiff-Dateien
oh sorry :oops:
Beim ganzen Testen habe ich dass einmal entfernt aber ich habe den Befehl drin
Delphi-Quellcode:
LibTiffDelphi.TIFFGetField(OpenTiff2,TIFFTAG_IMAGELENGTH,row); buf := _TIFFmalloc(TIFFScanlineSize(OpenTiff2)); For i := 0 To row - 1 do begin R1 := LibTiffDelphi.TIFFReadScanline(OpenTiff2,Buf,i,0); R2 := LibTiffDelphi.TIFFWriteScanline(OpenTiff,Buf,i,0); |
Re: Multipage bei Tiff-Dateien
Ich muss leider jetzt weg.
Wenn ihr eine Idee habt, also kann natürlich auch ohne diese Komponente sein, dann schreibt sie bitte. |
Re: Multipage bei Tiff-Dateien
Also ich bin zwar schon weitergekommen aber da ist noch ein Fehler.
Aber erstmal erwähne ich was der vorherige Fehler war: Man muss nämlich erst sogenannte Tags bzw. Fields definieren. Das hab ich jetzt gemacht. Hier erstmal der "neue" Code.
Delphi-Quellcode:
procedure TForm_Scan.Button1Click(Sender: TObject);
var i,R1,R2 : integer; mFileName,mFileName2,mtest : string; OpenTiff,OpenTiff2: PTIFF; buf : pointer; row, AddRow : integer; width, height,rows,cols,channels, Photo, BitsPerSam : ^integer; TileLen, TileWid, rowstrip : ^integer; begin mFileName := 'F:\temp\gescannteBilder\BMPTiff1.tiff'; mFileName2 := 'F:\temp\gescannteBilder\BMPTiff2.tiff'; New(rows); New(cols); New(channels); New(Photo); New(BitsPerSam); New(TileLen); New(TileWid); New(rowstrip); OpenTiff2 := TIFFOpen(mFileName2,'r'); TIFFGetField(OpenTiff2,TIFFTAG_IMAGELENGTH,rows); TIFFGetField(OpenTiff2,TIFFTAG_IMAGEWIDTH,cols); TIFFGetField(OpenTiff2,TIFFTAG_SAMPLESPERPIXEL,channels); TIFFGetField(OpenTiff2,TIFFTAG_PHOTOMETRIC,Photo); TIFFGetField(OpenTiff2,TIFFTAG_BITSPERSAMPLE,BitsPerSam); TIFFGetField(OpenTiff2,TIFFTAG_BITSPERSAMPLE,BitsPerSam); TIFFGetField(OpenTiff2,TIFFTAG_BITSPERSAMPLE,BitsPerSam); TIFFGetField(OpenTiff2,TIFFTAG_TILELENGTH,TileLen); TIFFGetField(OpenTiff2,TIFFTAG_TILEWIDTH,TileWid); TIFFGetField(OpenTiff2,TIFFTAG_ROWSPERSTRIP,rowstrip); buf := _TIFFmalloc(TIFFScanlineSize(OpenTiff2)); OpenTiff := TIFFOpen(mFileName,'a'); TIFFSetField(OpenTiff,TIFFTAG_IMAGEWIDTH,cols); TIFFSetField(OpenTiff,TIFFTAG_IMAGELENGTH,rows); TIFFSetField(OpenTiff,TIFFTAG_SAMPLESPERPIXEL,channels); TIFFSetField(OpenTiff,TIFFTAG_PHOTOMETRIC,Photo); TIFFSetField(OpenTiff,TIFFTAG_BITSPERSAMPLE,BitsPerSam); TIFFSetField(OpenTiff,TIFFTAG_TILELENGTH,TileLen); TIFFSetField(OpenTiff,TIFFTAG_TILEWIDTH,TileWid); TIFFSetField(OpenTiff,TIFFTAG_ROWSPERSTRIP,rowstrip); TIFFSetField(OpenTiff,TIFFTAG_PLANARCONFIG,PLANARCONFIG_CONTIG); row := TIFFScanlineSize(OpenTiff2); For i := 0 To row - 1 do begin R1 := LibTiffDelphi.TIFFReadScanline(OpenTiff2,Buf,i,1); R2 := LibTiffDelphi.TIFFWriteScanline(OpenTiff,Buf,i,1); end; TIFFWriteDirectory(OpenTiff); _TIFFfree(buf); TIFFClose(OpenTiff); TIFFClose(OpenTiff2); Dispose(rows); Dispose(cols); Dispose(channels); Dispose(Photo); Dispose(BitsPerSam); Dispose(TileLen); Dispose(TileWid); Dispose(rowstrip); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz