Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Multipage bei Tiff-Dateien (https://www.delphipraxis.net/116159-multipage-bei-tiff-dateien.html)

michi101200 24. Jun 2008 13:28


Multipage bei Tiff-Dateien
 
Hallo,

ich komme mal wieder nicht weiter :-(

Ich schreib gerade ein Scann Programm mit der Komponenten DelphiTwain.
Das klappt auch wunderbar und wird auch in einer Tiff-Datei gespeichert.

Aber wenn man mehrere Dokumente scannt dann soll das in einer Tiff-Datei mit mehreren Seiten gespeichert werden.
Dazu benutze ich die Klasse LibTiffDelphi
http://www.awaresystems.be/imaging/tiff/delphi.html

Zur Testzwecken lasse ich den Scannvorgang erstmal aussenvor und versuche 2 Tiff-Dateien in einer zu speichern:

Delphi-Quellcode:
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;
Kennt ihr eine Lösung?

Vielen Dank schon mal für eure Bemühungen

Angel4585 24. Jun 2008 13:31

Re: Multipage bei Tiff-Dateien
 
Das gehört hier glaub nich hin ;)

michi101200 24. Jun 2008 13:35

Re: Multipage bei Tiff-Dateien
 
:wall:

Eine ganz dumme Frage nebenbei:
Wie kann ich das Thema verschieben?

Larsi 24. Jun 2008 13:41

Re: Multipage bei Tiff-Dateien
 
Gar nicht. Musst du die Melde Funktion benutzen. (kleines Ausrufezeichen bei deinem ersten Beitrag). Nur Mods und der Admin können Beiträgs verschieben.

soulies 24. Jun 2008 13:43

Re: Multipage bei Tiff-Dateien
 
Zitat:

Delphi-Quellcode:
  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;

welchen wert hat 'row' bei dir ?
für mich siehts so aus das die schleife nicht durchlaufen wird

cya

michi101200 24. Jun 2008 13:46

Re: Multipage bei Tiff-Dateien
 
Die Schleife läuft durch aber bei
Delphi-Quellcode:
R2 := LibTiffDelphi.TIFFWriteScanline(OpenTiff,Buf,i,0);
ist der Rückgabewert -1. Das deutet auf einen Fehler hin.

Aber ich weiß nicht warum.

soulies 24. Jun 2008 13:51

Re: Multipage bei Tiff-Dateien
 
öffnet

Delphi-Quellcode:
TIFFOpen(...);
die datei vllt. nur lesend ?

cya

michi101200 24. Jun 2008 13:55

Re: Multipage bei Tiff-Dateien
 
Ich geben als Paramter 'w' für Write. So steht dass wohl in der Dokumentation.

Ich hab dass grad mit 'r' probiert aber das klappt auch nicht was auch logisch ist.

DP-Maintenance 24. Jun 2008 14:09

DP-Maintenance
 
Dieses Thema wurde von "MrSpock" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Multimedia" verschoben.
Ist ein Multimedia Thema.

soulies 24. Jun 2008 14:26

Re: Multipage bei Tiff-Dateien
 
ich hab ein verständnisproblem mit deiner variablen 'row':
Delphi-Quellcode:
var i : integer;
    mFileName,mFileName2 : string;
    OpenTiff,OpenTiff2: PTIFF;
    buf : pointer;
    row,R1,R2 : integer;
begin
die variable ist als int angegeben, aber es wird nie ein wert zugewiesen - oder ?

und, hier
Delphi-Quellcode:
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;
vermute ich das row irgendeinen wert hat, zB 10.000 - wenn aber nur 1.000 zeilen wirklich da sind
dann versucht doch TIFFWriteLine zu schreiben obwohls es nicht geht und liefert -1 zurück.

also ich hab erklärungsbedarf (auch für mich selbst wenn alles richtig ist ...)

cya


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:24 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz