【问题标题】:Convert 16x16 true-color image of palette colors, to actual palette file将调色板颜色的 16x16 真彩色图像转换为实际的调色板文件
【发布时间】:2019-02-08 02:40:16
【问题描述】:

背景:我正在尝试查看旧游戏存档文件中的资产。它们是 8 位的。我需要一个调色板让它们看起来正确。

  • 我有调色板。 DxWnd 支持转储活动调色板。

  • 但是,调色板采用对话框的形式,拉伸了 16x16 色 (=256)。

[更新以包含实际输出]

  • 然后我将它们缩小到每个颜色一个像素。所以现在我有了一个 16x16(真彩色)位图。

我想从中获取一个调色板文件。我不知道调色板是否有标准格式,或者它只是(RGB 为 256*3)字节的普通旧数据。 GIMP 支持在导入“原始图像数据”时可以导入的调色板格式。

所以,问题是:将这个 16x16 的真彩色值图像转换为 3x256 字节调色板块的最简单方法是什么?

无论是工具,还是 Python、C/C++ 或其他任何东西。关键是,这是一个小问题(“错误的数据格式”)。因此,如果某些现有工具(Linux 或 Windows)可以使用它,无论如何。

绝对清楚:这不是精灵。它不需要被启发式地转换为一些“最适合”的调色板。它实际上是调色板。

[edit] 根据 cmets,我尝试从 GIMP 和 IrfanView 输出调色板,但我得到了这个,而是混杂了一组颜色:

【问题讨论】:

  • 在IrfanView中打开,缩小为8位,导出调色板。和你一样,我不知道你在寻找什么格式,但它可能有用。
  • 我试过用 GIMP 来做,但问题是(出乎意料地)它不会以正确的顺序生成调色板!它把周围的一切都弄乱了!我会假设它会找到一个空闲槽,如果每个元素都是唯一的,它只会按顺序填充潜在调色板的“空闲槽”。但不是。我会试试 IrfanView 以防万一。
  • 啊,我明白你在说什么。从技术上讲,16x16 24 位原始图像似乎是一个调色板。每个像素是 3 个颜色字节,256 个像素。如果您将其保存为原始文件,它可能会与您所拥有的一样工作。
  • 仅供参考,我刚刚尝试了 IrfanView,但调色板仍然不正常。 (将更新我的帖子以显示结果)
  • 你需要通过决定你想做什么以及你想怎么做来缩小问题的范围。 Stack Overflow 的工作方式是,你决定一种语言和技术。您不会要求社区提供像 “Python、C/C++ 或其他任何语言”这样的语言

标签: python c++ linux image-processing bitmap


【解决方案1】:

ImageMagick 将提供一个原始的 256*24 位 RGB 图像,当从您的图像中打开原始图像时,GIMP 可以将其用作调色板,如下所示:

convert UEw8E.png -resize '16x16!' -filter point -depth 8 palette.rgb

! 表示强制大小,无论纵横比如何,因为您的图像不是正方形。-filter point 跳过缩小过滤器。-depth 8 强制每种颜色 8 位。虽然您的图像已经是 8每种颜色的位数,最好知道它会输出哪种格式。)

创建的文件palette.rgb 是图像中每种颜色 8 位(24 位 RGB)调色板的原始数组,从左到右,从上到下。 (我想你要的是哪个)

现在使用 GIMP(用 2.8.22 测试)打开任何原始图像,并设置

  • 图像类型:索引
  • 调色板类型:R、G、B(正常)
  • 调色板文件:palette.rgb

GIMP 中的调色板如下所示(一切都与您的图像中的顺序相同):

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-10
    • 2020-03-31
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多