【问题标题】:image from imagebox to 32bit floating point tiff file从图像框到 32 位浮点 tiff 文件的图像
【发布时间】:2013-07-06 08:44:17
【问题描述】:

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

【问题讨论】:

  • 您似乎在滥用该网站。您已经连续问了 第四个 问题,关于完全相同的问题。
  • 不是那样的......我真的需要一个有用的答案

标签: image picturebox tiff libtiff.net


【解决方案1】:

我对编程的经验很少,但我在谷歌上偶然发现了你的问题。

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

也许尝试将您的图像转换为未压缩的位图文件,然后再试一次。

【讨论】:

  • 我应该怎么做?你能写一些代码什么的吗?
  • Idk,找到一些 JPEG 库,确保它们具有解压缩功能,Google 和手册页是您的朋友
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
相关资源
最近更新 更多