Come posso ottenere il tag di boffs strip -boffs per rimanere lo stesso quando si utilizza la libreria Libtiff.net 2.3?

StackOverflow https://stackoverflow.com/questions/9440004

  •  12-11-2019
  •  | 
  •  

Domanda

Ho un'immagine originale che ha un tag stival -offsets = 768. Quando modifico l'immagine in memoria e poi lo scrivo a un file provo a impostare specificamente il tag di boffs strip -boff manualmente sullo stesso valore dell'originale che è 768 (usando il Seguendo il metodo).

//Set the height for the page
output.SetField(TiffTag.ROWSPERSTRIP, ttPage[i].Height);

//Set the offset for the page
output.SetField(TiffTag.STRIPOFFSETS, ttPage[i].StripOffset);

Per qualche motivo i risultati finali sono strip -offset = 8. Perché non imposterà i box -boffs come voglio? Su una nota a margine che influisce anche il mio "offset di pagina" mostrato in Sistemi a conoscenza AstiftagViewer. Sono sicuro che questo ha a che fare con lo stesso problema. In qualche modo non sto salvando correttamente il tiff. Forse non posso impostare manualmente il tag "strip -boff" ed è set automatico? Guarda i miei esempi di seguito ...

Results from AsTiffTagViewer

È stato utile?

Soluzione

STRIPOFFSETS Il tag è impostato automaticamente dalla libreria quando scrive i dati dell'immagine nel file.

Di solito non importa quale sia il valore di questo tag (a meno che non sia un numero corretto, ovviamente).

Ma a volte c'è il requisito: i dati dell'immagine dovere essere salvato dopo l'intestazione della directory (pagina). Alcune applicazioni richiedono che le TIFF siano scritte in quel modo.

In tal caso dovresti usare una chiamata per CheckpointDirectory Metodo prima di uno qualsiasi dei metodi che scrivono dati raster in un file o un flusso per scrivere tag TIFF prima dei dati raster.

CheckpointDirectory Salverà i dati della directory insieme ai dati dei tag ma non chiuderà l'output e sarai in grado di continuare a creare un'immagine.

Il tuo codice dovrebbe assomigliare a questo:

using (Tiff tif = Tiff.Open("file.tif", "w"))
{
 ...
 tif.SetField(..);
 ...
 tif.SetField(..);
 tif.CheckpointDirectory();

 ...
 tif.WriteRawStrip(..);
 ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top