Hier ist meine Frage. Bear mit mir eine kleine Erklärung:byte [] zu ushort []
Ich lese tiff Bild in den Puffer; Jedes Pixel meines Tiffs wird durch eine Ushort dargestellt (16 Bit Daten, nicht-negativ).
Meine Bildgröße ist 64 * 64 = 4096. Wenn mein TIFF in Puffer geladen wird, ist die Pufferlänge daher 8192 (doppelt so viel wie 4096). Ich denke, das liegt daran, dass der Computer in meinem Puffer 2 Byte zum Speichern eines einzelnen Pixelwerts verwendet.
Ich möchte den Wert für ein bestimmtes Pixel erhalten, in diesem Fall sollte ich alle 2 Bytes zu 1 ushort kombinieren?
Zum Beispiel: 00000000 11111111 -> 0000000011111111?
Hier ist mein Code:
public static void LoadTIFF(string fileName, int pxlIdx, ref int pxlValue)
{
using (Tiff image = Tiff.Open(fileName, "r"))
{
if (image == null)
return;
FieldValue[] value = image.GetField(TiffTag.IMAGEWIDTH);
int width = value[0].ToInt();
byte[] buffer = new byte[image.StripSize()];
for (int strip = 0; strip < image.NumberOfStrips(); strip++)
image.ReadEncodedStrip(strip, buffer, 0, -1);
// do conversion here:
//ushort bufferHex = BitConverter.ToUInt16(buffer, 0);
image.Close();
}
}
Wie lese ich die byte [] Puffer, um sicherzustellen, dass ich die 16 Bit ushort Pixelwert erhalten kann?
Dank
Yup, ich denke, ich habe das Pixel, das ich will. Danke vielmals! –
Obwohl der Offset scheint Multiplikation von 2, und y ist eigentlich (y-1), und das gleiche für x. Gut abhängig von dem 0 basierten oder 1 basierten Index. –