Прочитайте изображение TIFF в C# с помощью libtiff.NET

У меня есть 16-битное изображение в градациях серого, которое мне нужно прочитать в C#. Для этого я использую библиотеку libtiff.NET. Я пытался следовать официальным учебникам, которые демонстрируют, как читать цветные изображения. Тем не менее, код в учебнике терпит неудачу с ObjectDisposedExceptionЯ думаю, потому что мое изображение в градациях серого и не окрашено.

В конце концов мне нужен простой двумерный массив, который содержит значения пикселей каждого пикселя (в диапазоне от 0 до 511). Чтобы обойти Исключение, я попробовал подход libtiff, основанный на сканировании:

// read the height data
float[,] heightData = new float[dgm.NumberOfPixelsInX, dgm.NumberOfPixelsInZ];

// Read the image into the memory buffer 
int scanlineSize = dgm.ImageData.ScanlineSize();
byte[][] buffer = new byte[dgm.NumberOfPixelsInZ][];

for (int i = 0; i < dgm.NumberOfPixelsInZ; i++)
{
    buffer[i] = new byte[scanlineSize];
    dgm.ImageData.ReadScanline(buffer[i], i);
}

for (int x = 0; x < dgm.NumberOfPixelsInX; x++)
{
    for (int y = 0; y < dgm.NumberOfPixelsInZ; y++)
    {
        heightData[x, y] = BitConverter.ToSingle(putBufferHere, 0);
    }
}

я знаю это putBufferHere должно быть что-то вроде buffer[y] но я не совсем уверен. Насколько я понял, одна строка в массиве буферов содержит данные для всей строки, так как мне получить данные одного конкретного пикселя?

0 ответов

Другие вопросы по тегам