Python 将调色板颜色的16x16真彩色图像转换为实际调色板文件
背景:我正在尝试查找旧游戏存档文件中的资产。它们是8位的。我需要一个调色板让它们看起来正确Python 将调色板颜色的16x16真彩色图像转换为实际调色板文件,python,c++,linux,image-processing,bitmap,Python,C++,Linux,Image Processing,Bitmap,背景:我正在尝试查找旧游戏存档文件中的资产。它们是8位的。我需要一个调色板让它们看起来正确 我有调色板。DxWnd支持转储活动调色板 但是,调色板是以对话框的形式显示的,具有16x16种颜色(=256)的拉伸 [更新以包括实际输出] 然后我把它们缩小到每种颜色一个像素。现在我有了一个16x16(真彩色)位图 我想从中得到一个调色板文件。我不知道调色板是否有标准格式,或者它只是(256*3代表RGB)字节的普通旧数据。GIMP支持在导入“原始图像数据”时可以导入的调色板格式 所以,问题是
- 我有调色板。DxWnd支持转储活动调色板
- 但是,调色板是以对话框的形式显示的,具有16x16种颜色(=256)的拉伸
- 然后我把它们缩小到每种颜色一个像素。现在我有了一个16x16(真彩色)位图
ImageMagick将提供一个原始的256*24位RGB图像,GIMP在从图像中打开原始图像时可以将其用作调色板,如下所示:
convert UEw8E.png -resize '16x16!' -filter point -depth 8 palette.rgb
(由于您的图像不是正方形,!
意味着强制设置所需的大小,而不考虑纵横比。-过滤点
跳过缩小比例的过滤器。-深度8
强制每种颜色8位。尽管您的图像已经是每种颜色8位,但最好确定它将输出哪种格式。)
创建的文件palete.rgb
,是图像中每种颜色8位(24位rgb)调色板的原始数组,从左到右,从上到下。(我想这是你要求的)
现在使用GIMP打开任何原始图像(使用2.8.22测试),并设置
- 图像类型:索引
- 调色板类型:R、G、B(正常)
- 调色板文件:
palete.rgb
在IrfanView中打开它,减少到8位,导出调色板。和你一样,我也不知道你想要的是什么格式,但它可能会工作。我曾尝试使用GIMP来实现这一点,但问题是(出乎意料地)它无法以正确的顺序生成调色板!它把周围的一切都搞混了!我假设它会找到一个空闲的位置,如果每个元素都是唯一的,它会按顺序填充潜在调色板的“空闲位置”。但是没有。我会试试IrfanView以防万一。啊,我明白你的意思了。从技术上讲,16x16 24位原始图像似乎是一个调色板。每个像素是3个颜色字节,256个像素。如果您将其保存为原始,它可能会与您拥有的一样工作。仅供参考,我刚刚尝试了IrfanView,但调色板仍然不正常。(将更新我的帖子以显示结果)你需要通过决定你想做什么和如何做来缩小问题范围。堆栈溢出的工作方式是,您决定一种语言和技术。你不会要求社区提供类似“Python、C/C++或其他什么”的语言。