【问题标题】:Why is .NET `PixelFormat` has an `Format8bppIndexed` element?为什么 .NET `PixelFormat` 有一个 `Format8bppIndexed` 元素?
【发布时间】:2016-06-29 19:06:02
【问题描述】:

一组8位可以存储256个值。

一个灰度级可以有 256 种变化。

那么,他们为什么需要Format8bppIndexed?为什么是Indexed

为什么不Format8bpp

【问题讨论】:

  • 你能解释一下为什么你认为灰度在这里是相关的吗?当然,您可以拥有 8 位灰度(尽管您也可以拥有 16 位灰度等),但这并不意味着这是您的唯一每个像素可以使用 8 位。
  • 怎么样? 想要达到什么目的?请注意,尽管在该特定情况下使用的调色板仅包含灰色阴影,但这并不意味着总是如此。
  • 索引格式的概念可以追溯到 1990 年代初期。当时这是必要的,因为当时硬件仍然很糟糕,内存是当时的主要限制因素。太糟糕了,25 年前糟糕的硬件一直拖累程序员和 SO 问题。让我们继续讨论吧。

标签: .net c#-4.0 bitmap pixel grayscale


【解决方案1】:

它被索引是因为每个值都是颜色表的索引,颜色表很可能是具有更大深度的 RGB 或 RGBA。例如,您可以有一个 32 位条目的调色板(红色、绿色、蓝色和 alpha 各 8 位),但调色板本身只有 256 个条目,因此您可以用单个字节表示每个像素。这在 PNG 文件中是(或至少曾经是)常见的。

如果您查看PixelFormat 枚举,您会发现大多数值由两条信息组成:

  • 位数
  • 这些位代表什么,来自:
    • 灰度
    • ARGB / RGB
    • 已编入索引

【讨论】:

  • 能否提供图表或其他资源?
  • @anonymous:不是真的——这是一个相当简单的概念。有一个调色板(通常在图像文件的其他地方提供),每个像素值都是该调色板的索引。你觉得哪一点比较棘手?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2011-06-08
  • 2023-01-17
  • 2018-09-07
  • 1970-01-01
相关资源
最近更新 更多