AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Multipage bei Tiff-Dateien
Thema durchsuchen
Ansicht
Themen-Optionen

Multipage bei Tiff-Dateien

Ein Thema von michi101200 · begonnen am 24. Jun 2008 · letzter Beitrag vom 26. Jun 2008
Antwort Antwort
Seite 2 von 2     12   
michi101200

Registriert seit: 24. Apr 2008
Ort: Ahaus
19 Beiträge
 
Delphi 6 Professional
 
#11

Re: Multipage bei Tiff-Dateien

  Alt 24. Jun 2008, 14:33
Kein Problem.

Also die Variable row bekommt bei LibTiffDelphi.TIFFGetField(OpenTiff2,TIFFTAG_IMAGELENGTH,row); den Wert.

Es wird auch etwas gespeichert aber das wird so durcheinander gespeichert dass da kein Bild rauskommt. Bei R2 := LibTiffDelphi.TIFFWriteScanline(OpenTiff,Buf,i,1); kommt schon ein Fehler, also der Rückgabewert ist -1 was ein Fehler ist denn es soll 1 rauskommen.
  Mit Zitat antworten Zitat
michi101200

Registriert seit: 24. Apr 2008
Ort: Ahaus
19 Beiträge
 
Delphi 6 Professional
 
#12

Re: Multipage bei Tiff-Dateien

  Alt 24. Jun 2008, 14:38
Hier ist wohl mein Problem (in englisch) beschrieben aber trotzdem läuft das nicht.
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#13

Re: Multipage bei Tiff-Dateien

  Alt 24. Jun 2008, 14:40
also, wo kommt denn das her ?
LibTiffDelphi.TIFFGetField(OpenTiff2,TIFFTAG_IMAGELENGTH,row); denn in deinem geposteten quellcode stehts ja nicht drin, oder ist dieser nur ein ausschnitt ?
  Mit Zitat antworten Zitat
michi101200

Registriert seit: 24. Apr 2008
Ort: Ahaus
19 Beiträge
 
Delphi 6 Professional
 
#14

Re: Multipage bei Tiff-Dateien

  Alt 24. Jun 2008, 14:44
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.
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#15

Re: Multipage bei Tiff-Dateien

  Alt 24. Jun 2008, 14:51
Zitat:
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.
alles ok ... aber

in deiner geposteten btn methode

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;
taucht doch der befehl gar nicht auf ...also wird er an anderer stelle verwendet ...
ich wollt nur wissen wo ?
  Mit Zitat antworten Zitat
michi101200

Registriert seit: 24. Apr 2008
Ort: Ahaus
19 Beiträge
 
Delphi 6 Professional
 
#16

Re: Multipage bei Tiff-Dateien

  Alt 24. Jun 2008, 14:54
oh sorry

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);
  Mit Zitat antworten Zitat
michi101200

Registriert seit: 24. Apr 2008
Ort: Ahaus
19 Beiträge
 
Delphi 6 Professional
 
#17

Re: Multipage bei Tiff-Dateien

  Alt 24. Jun 2008, 15:09
Ich muss leider jetzt weg.

Wenn ihr eine Idee habt, also kann natürlich auch ohne diese Komponente sein, dann schreibt sie bitte.
  Mit Zitat antworten Zitat
michi101200

Registriert seit: 24. Apr 2008
Ort: Ahaus
19 Beiträge
 
Delphi 6 Professional
 
#18

Re: Multipage bei Tiff-Dateien

  Alt 26. Jun 2008, 07:44
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr.
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