【发布时间】:2022-01-04 07:47:06
【问题描述】:
对于旧版游戏,我需要加载 BMP(或 PNG)调色板格式的图像并更改调色板上某些众所周知的索引(例如,使用绿色阴影替换使用索引 0-8 的红色渐变,以更改单位的颜色)。单独进行颜色替换是不够的,因为同一种颜色可能会被多个单元特征使用。
是否可以加载调色板图像并将颜色索引保留在 ImageSharp 中?当我使用Image.Load("FileName") 加载我的调色板单元图像时,它总是以 Argb32 模式加载,并且调色板丢失了。在 Photoshop 中,相同的图像在索引模式下正确加载。另外,我不确定可以使用哪些属性来查看/编辑调色板。
我没有在网上找到有关该主题的太多信息。我看到文档中有一个类型 IndexedImageFrame<TPixel>,但我不确定该类型是否/如何有助于解决上述问题。
编辑:正如 James South 正确指出的那样,ImageSharp 默认以 Rgba32 模式加载 PNG。
【问题讨论】:
-
那么...不要使用 ImageSharp,我猜?您可以使用
System.Drawing完美打开索引格式,使用LockBits和Marshal.Copy获取原始底层字节。这就是我为my own classic game file formats conversion tool 所做的。
标签: c# image-processing imagesharp