【发布时间】:2020-12-13 21:31:32
【问题描述】:
我正在制作一个国际象棋机器人,它将在聊天程序中运行,根据用户的命令做出反应和移动棋子。因此,我正在尝试使用 python 包枕头将棋子的 png 图像粘贴到棋盘的 png 背景图像之上。
在任何其他软件中,棋子的背景都是透明的,它们后面的任何东西都会显示出来,但是当我使用枕头将其粘贴到棋盘顶部时,棋子的背景是灰色的,与棋盘上的瓷砖不匹配.
有没有一种方法可以将棋子图像粘贴到我的棋盘背景之上,而无需添加棋子的灰色背景颜色?或者在 python 中是否有另一种方法可以提供所需的结果?
我还没有完成机器人和游戏逻辑,但作为示例,我包含了一些代码,说明了我如何将一张图片粘贴到下面的另一张图片之上:
from PIL import Image
board = Image.open('assets/chessboard.png')
w_pawn = Image.open('assets/w_pawn_png_shadow_128px.png')
a_eight = (102, 30, 210, 158) # Left, top, right and bottom coordinates of where the piece is pasted onto the board
battle_board = board.copy()
battle_board.paste(w_pawn, a_eight)
battle_board.show()
为了快速显示输出的样子,我附上了一张当棋子粘贴到棋盘上时的截图:
【问题讨论】:
-
我认为你需要使用
Image.alpha_composite()来获得你想要的效果。在我曾经写过的this answer 中,有一个使用它在图像顶部绘制形状的示例 - 但这是相同的想法。 -
这里是another answer,展示了
alpha_composite()函数的使用。 -
谢谢,我需要一些时间来正确理解这一点,但乍一看,这看起来很有希望。
-
如果你edit你的问题并添加一些链接到所涉及的两个图像,我也许可以发布一个可运行的答案......
-
哦,不错。这些有帮助吗?
标签: python python-imaging-library