我假设你想要切成拼图块的图片是一个光栅图像,其分辨率将用于拼图块,称之为 /picture/。此外,我假设你有沿着你希望锯开的边缘的第二个光栅图像,具有相同的尺寸,称之为 /raster/。那么你的问题就在于确定光栅图像中的所有连通区域。每个光栅图像的像素都会被注释为所属的拼图块的 id,最初为“none”、“-1”或其他。然后,你的算法扫描光栅图像中的所有像素,跳过已经属于某个拼图块的像素。对于每个未分配的拼图块,它执行一次泛洪填充,将像素着色为该拼图块的 id(例如数字)。在第二次扫描中,在为每个拼图块分配图像之后,将图像的相应像素添加到拼图块中。作为第一遍的一部分,你可以维护每个拼图块 id 的边界框。这使你能够将拼图块的图像分配到其适当的尺寸。 你需要一个适当的约定来处理边框像素:例如,右侧的边框像素属于该拼图块,如果它们具有相同的 x 位置,但是如果它们在上面,它们也属于该拼图块。