gpt4 book ai didi

java - 在java中调色板交换BufferedImage

转载 作者:行者123 更新时间:2023-12-02 07:13:45 27 4
gpt4 key购买 nike

我需要为我正在开发的一款游戏的角色 Sprite 进行调色板交换,因此如果多个玩家选择相同的角色,它们将具有不同的颜色。我已将所有 Sprite 存储在 BufferedImages 中,并希望动态更改调色板。

例如,我想将任何红色像素更改为蓝色,将任何黑色像素更改为橙色,将任何黄色像素更改为粉色。我需要交换大约 25 种颜色。

我已经做了一些研究,看起来我必须创建某种 ColorModel 并从该模型创建一个新的 BufferedImage?我不知道如何创建 ColorModel,因此如果有相关教程,那将会非常有帮助。

谢谢!

最佳答案

以下代码通过构造共享原始光栅数据的新 BufferedImage 来交换调色板。所以它运行速度很快并且不占用太多内存。

static BufferedImage switchPalette(BufferedImage bi,
IndexColorModel icm) {
WritableRaster wr = bi.getRaster();
boolean bAlphaPremultiplied = bi.isAlphaPremultiplied();
return new BufferedImage(icm, wr, bAlphaPremultiplied, new Hashtable());
}

关于java - 在java中调色板交换BufferedImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15213259/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com