簡體   English   中英

在 ImageSharp 中使用調色板/索引圖像

[英]Working with palette / indexed images in ImageSharp

對於舊版游戲,我需要加載 BMP(或 PNG)調色板格式的圖像並更改調色板上的某些眾所周知的索引(例如使用綠色陰影替換使用索引 0-8 的紅色漸變,以更改 colors一個單位)。 單獨進行顏色替換是不夠的,因為同一種顏色可能會被多個單元特征使用。

因此是否可以加載調色板圖像並將顏色索引保留在 ImageSharp 中? 當我使用Image.Load("FileName")加載我的調色板單元圖像時,它總是以 Argb32 模式加載,並且調色板丟失了。 在 Photoshop 中,相同的圖像在索引模式下正確加載。 另外,我不確定可以使用哪些屬性來查看/編輯調色板。

我在網上沒有找到關於該主題的太多信息。 我看到文檔中有一個類型IndexedImageFrame<TPixel> ,但我不確定該類型是否/如何有助於解決上述問題。

感謝您的任何提示!

當我使用Image.Load("FileName")加載調色板單元圖像時,它始終以 Argb32 模式加載

實際上,如果加載 png 將是Rgba32 (盡管這可能會在未來發生變化)。 為了保證像素格式,您應該使用通用變體。

在 Photoshop 中,相同的圖像在索引模式下正確加載。

那不是 PhotoShop 正在做的事情。 他們正在捕捉調色板並將其展示給您。 對於任何像素格式,實際的 canvas 格式都是相同的。

ImageSharp 也是如此。 解碼后的圖像是TPixel的 2D 緩沖區,但我們在解碼時捕獲元數據並使用它來通知編碼器以何種像素格式保存對圖像進行編碼。

也就是說......目前恐怕不支持在解碼時捕獲當前調色板。 如果您想在GitHub 存儲庫中提出問題,我們可能會考慮 V2。

如果您有該信息要捕獲然后調整/保存,則可以在圖像編碼期間使用具有更新調色板的 PaletteQuantizer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM