【问题标题】:Saving colorindexed Tiff using LibTiff.net throws exception使用 LibTiff.net 保存颜色索引的 Tiff 会引发异常
【发布时间】:2018-11-27 17:21:56
【问题描述】:

我正在尝试使用 Libtiff.net 将颜色索引位图保存到 Tiff。 但它会引发 OutOfRangeException:

如果我设置和索引颜色图,则会发生异常:

       internal static bool SaveColorPalette(Bitmap source, Tiff destTiff, int bitsPerSample)
    {
        destTiff.SetField(TiffTag.PHOTOMETRIC, Photometric.PALETTE);
        var paletteSize = 1 << bitsPerSample;
        var palette = source.Palette.Entries;
        var reds = new short[paletteSize];
        var greens = new short[paletteSize];
        var blues = new short[paletteSize];
        for (var i = 0; i < palette.Length && i < paletteSize; ++i)
        {
            var color = palette[i];
            reds[i] = color.R;
            greens[i] = color.G;
            blues[i] = color.B;
        }

        destTiff.SetField(TiffTag.COLORMAP, reds, greens, blues);
        return true;
    }

有人知道是什么原因造成的吗?

谢谢。

编辑: 当我保存 Tiff 时发生异常

outputTiff.WriteDirectory();

【问题讨论】:

    标签: c# bitmap libtiff libtiff.net


    【解决方案1】:

    我找到了解决办法。

    首先你必须定义

    TiffTag.BITSPERSAMPLE
    

    TiffTag.COLORMAPTiff.SetField 函数使用它来计算数组长度,而不是依赖于 C# 长度属性。

    参见第 231 行 TiffTagMethods

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-27
      • 2018-08-12
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 2018-01-07
      相关资源
      最近更新 更多