分隔精灵表中图像的最佳方法是什么?

0 投票
1 回答
1420 浏览
提问于 2025-04-18 13:10

我在找一个网站或者其他什么工具,可以用来把精灵图从图 sheet 中分离出来。请告诉我你们有什么好主意。我之前用过一个叫 sprite splitter 的下载工具,但它现在不支持包含超过 10 张图片的精灵图 sheet 了……谢谢!

我还想补充一下,我一直在使用 spriters-resources 来获取我的精灵图 sheet。

1 个回答

2

在pygame中,你可以加载一张包含多个角色图像的图片,然后利用这张图像创建多个子图像,就像使用不同的图片一样。这样,你就不需要把一张大图拆分成很多小文件了。

subsurface()

当然,你也可以使用pygame的功能将任何子图像保存为单独的文件。

pygame.image.save()


编辑:

这是一张用于动画的图片。

import pygame
import pygame.locals

pygame.init()
screen = pygame.display.set_mode((300,300))

# one image -> 7 subsurfaces

sheet = pygame.image.load('explosed-sprite.png').convert_alpha()

imgs = []

for x in range(7):
    imgs.append( sheet.subsurface((20*x,0,20,20)) )

current_img = 0

# clock - FPS

clock = pygame.time.Clock()

# mainloop 

running = True

while running:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                running = False

    # next image modulo 7
    current_img = ( current_img + 1 ) % 7 

    screen.fill( (0,0,0) )
    screen.blit( imgs[current_img], (150-10,150-10) )
    pygame.display.flip()

    clock.tick(12)

# save subsurfaces as separated images

for x in range(7):
    name = 'frame_' + str(x) + '.png'
    pygame.image.save( imgs[x], 'frame_' + str(x) + '.png' ) 
    print name, 'saved'

# the end
pygame.quit()

explosed-sprite.png

将这张图片保存为 explosed-sprite.png,放在与python脚本同一个文件夹里。

撰写回答