ここは私の質問です。私に少し説明を与えてくれる:バイト[] to ushort []
私はバッファにtiffイメージを読み込んでいます。私のtiffの各ピクセルは、ushort(16ビットデータ、非負)で表されます。
私の画像サイズは64 * 64 = 4096です。私のtiffがバッファにロードされると、バッファの長さは8192(4096の2倍)になります。私の推測では、私のバッファーでは、コンピューターが2バイトを使用して1つのピクセル値を保管しているからです。
特定のピクセルの値を取得したいとします。この場合、2バイトごとに1時間を組み合わせる必要がありますか?
例:00000000 11111111 - > 0000000011111111?ここで
は私のコードです:
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();
}
}
私はバイト[]は、私がUSHORTピクセル値16ビットを得ることができることを保証するために、リード・バッファはどうすればよいですか?各画素は16ビットで表現されているので
おかげ
うん、私は私が望むピクセルを持っていると思う。どうもありがとう! –
オフセットは2倍のように見えますが、yは実際には(y-1)、xは同じです。 0ベースまたは1ベースのインデックスに依存します。 –