图像从imagebox到32bit浮点tiff文件

时间:2013-07-06 08:44:18

标签: image picturebox tiff libtiff.net

我想将图像的像素从imagebox复制到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();
}

1 个答案:

答案 0 :(得分:1)

我对编程的经验很少,但我随机向Google发现了你的问题。

我认为您正在获取条形码,因为源图像已压缩(如.jpg),因此您将压缩数据加载到内存流和tiff文件中,而不是像素数据本身。

也许尝试将您的图片转换为未压缩的位图文件并尝试过来。