【问题标题】:What is the stride for a 256 color (8 bit) bitmap?256 色(8 位)位图的步幅是多少?
【发布时间】:2013-05-20 09:16:36
【问题描述】:

这里和其他地方有很多关于计算步幅的问题(和答案)。我有一些需要读入内存的位图。一切正常 IFF 它们是 1650 万色(24 位)。但是,我只需要它们是 256 色(8 位),当我尝试加载确切的图像,但颜色深度较低时,它会爆炸。我只能忍受这个;除了,显然,256 色图像比 1650 万色图像小很多。

那么,256 色灰度(8 位)图像的步幅是多少?

【问题讨论】:

    标签: c# bitmapimage stride 256color


    【解决方案1】:

    实际上并没有定义步幅应该是什么。通常,如前所述,它是四舍五入到下一个四的倍数的宽度,但实际上并没有将其作为标准强制执行。

    完全确定的唯一方法就是从图像中请求它。没有提供有关如何访问图像数据的信息,但这样做的标准方法是创建图像的Bitmap 对象,并使用bitmap.LockBits 函数获取BitmapData 对象。在这种情况下,Stride 只是该 BitmapData 对象的一个​​属性。

    如果您以某种方式已经将实际图像数据保存为字节数组,当然可以将其除以高度。

    【讨论】:

      【解决方案2】:

      对于 8 位图像,步幅就是像素的宽度。这是四舍五入到 4 的下一个倍数。例如,如果图像的宽度为 198 像素,则步幅为 200。

      【讨论】:

        【解决方案3】:

        8bit图像的步幅等于图像的宽度。

        步幅取决于所使用的颜色格式。要获得步幅值,请将像素使用的字节数乘以图像的宽度。

        【讨论】:

        • 嗯,这完全不正确。不能将步幅假定为图像宽度。
        猜你喜欢
        • 2013-04-03
        • 2012-04-28
        • 2011-12-20
        • 2013-12-03
        • 2011-05-24
        • 2012-05-26
        • 2014-03-17
        • 2013-02-24
        • 2018-12-28
        相关资源
        最近更新 更多