Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将调色板颜色的16x16真彩色图像转换为实际调色板文件_Python_C++_Linux_Image Processing_Bitmap - Fatal编程技术网

Python 将调色板颜色的16x16真彩色图像转换为实际调色板文件

Python 将调色板颜色的16x16真彩色图像转换为实际调色板文件,python,c++,linux,image-processing,bitmap,Python,C++,Linux,Image Processing,Bitmap,背景:我正在尝试查找旧游戏存档文件中的资产。它们是8位的。我需要一个调色板让它们看起来正确 我有调色板。DxWnd支持转储活动调色板 但是,调色板是以对话框的形式显示的,具有16x16种颜色(=256)的拉伸 [更新以包括实际输出] 然后我把它们缩小到每种颜色一个像素。现在我有了一个16x16(真彩色)位图 我想从中得到一个调色板文件。我不知道调色板是否有标准格式,或者它只是(256*3代表RGB)字节的普通旧数据。GIMP支持在导入“原始图像数据”时可以导入的调色板格式 所以,问题是

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

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

  • 但是,调色板是以对话框的形式显示的,具有16x16种颜色(=256)的拉伸

[更新以包括实际输出]

  • 然后我把它们缩小到每种颜色一个像素。现在我有了一个16x16(真彩色)位图
我想从中得到一个调色板文件。我不知道调色板是否有标准格式,或者它只是(256*3代表RGB)字节的普通旧数据。GIMP支持在导入“原始图像数据”时可以导入的调色板格式

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

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

非常清楚:这不是精灵。它不需要试探性地转换成某种“最适合”的调色板。这就是调色板

[编辑]根据注释,我尝试从GIMP和IrfanView输出调色板,但我得到的是一组混乱的颜色:


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
GIMP中的调色板如下所示(所有内容的顺序与图像中的顺序相同):

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