изображение из imagebox в 32-битный файл tiff с плавающей запятой

Я хотел бы скопировать пиксели изображения из коробки изображений в файл TIFF. Я также хочу использовать теги TIFF, поэтому я использую LibTiff.Net.

Я думал, что сначала я использую копирование изображения из imagebox в MemoryStream, а затем копирую поток памяти в массив байтов и, в конце концов, просто записываю байты из массива байтов в файл TIFF. Но я не знаю, как это сделать.

Я прошел весь процесс, но единственное, что я получаю в файле, это какие-то «штрих-коды». О, и мне нужен выходной файл в 32-битной плавающей запятой.

Вот где я до сих пор:

Tiff output = Tiff.Open(filename, "w");
if (output == null)
{
    return;
}
else
{
    MemoryStream ms = new MemoryStream();

    this.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Tiff);

    byte[] buff = ms.GetBuffer();

    output.SetField(TiffTag.IMAGEWIDTH, width);
    output.SetField(TiffTag.IMAGELENGTH, height);
    output.SetField(TiffTag.SAMPLESPERPIXEL, 1);
    output.SetField(TiffTag.BITSPERSAMPLE, 32);
    output.SetField(TiffTag.SAMPLEFORMAT, 3);
    output.SetField(TiffTag.ORIENTATION, BitMiracle.LibTiff.Classic.Orientation.TOPLEFT);
    output.SetField(TiffTag.ROWSPERSTRIP, height);
    output.SetField(TiffTag.PLANARCONFIG, PlanarConfig.CONTIG);
    output.SetField(TiffTag.PHOTOMETRIC, Photometric.MINISBLACK);
    output.SetField(TiffTag.COMPRESSION, Compression.NONE);
    output.SetField(TiffTag.FILLORDER, FillOrder.MSB2LSB);

    for (int i = 0; i < height; ++i)
        output.WriteScanline(buff, i);

    ms.Close();
    output.Close();
}

person user2542022    schedule 06.07.2013    source источник
comment
Похоже, вы злоупотребляете сайтом. Вы задали четвертый вопрос подряд об одной и той же проблеме.   -  person Bobrovsky    schedule 07.07.2013
comment
это не так.. мне просто очень нужен полезный ответ   -  person user2542022    schedule 07.07.2013


Ответы (1)


У меня очень мало опыта в программировании, но я случайно нашел ваш вопрос в Google.

Я думаю, что вы получаете штрих-коды, потому что исходное изображение сжато (например, .jpg), поэтому вы загружаете сжатые данные в поток памяти и в файл tiff, а не сами данные пикселей.

Возможно, попробуйте преобразовать изображение в несжатый файл растрового изображения и повторите попытку.

person Krz    schedule 06.07.2013
comment
и как мне это сделать? не могли бы вы написать код или что-то в этом роде? - person user2542022; 06.07.2013
comment
Idk, найдите несколько библиотек для JPEG, убедитесь, что они будут иметь функции распаковки, страницы Google и Man — ваши друзья. - person Krz; 07.07.2013