Pygame错误:不支持的图像格式

时间:2017-11-15 21:04:58

标签: python pygame pygame-surface

您好我正在尝试按照上一个问题中的说明操作: Pygame: how to load 150 images and present each one for only .5sec per trial

这是我目前的代码,我不确定我哪里出错了。

import pygame, glob
pygame.init()
pygame.mixer.init()
clock=pygame.time.Clock()

#### Set up window
window=pygame.display.set_mode((0,0),pygame.FULLSCREEN)
centre=window.get_rect().center
pygame.mouse.set_visible(False)

#colours
black = (0, 0, 0)
white = (255, 255, 255)


types= '*.tif'
artfile_names= []
for files in types:
    artfile_names.extend(glob.glob(files))

image_list = []
for artwork in artfile_names:
    image_list.append(pygame.image.load(artwork).convert())

##Randomizing
index=0
current_image = image_list[index]

if image_list[index]>= 150:
    index=0

stimulus= pygame.image.load('image_list')
soundPlay=True
def artwork():
    window.blit(stimulus,pygame.FULLSCREEN)

while not soundPlay:
    for imageEvent in pygame.event.get():
        artwork()
        pygame.display.update()
        clock.tick()

2 个答案:

答案 0 :(得分:1)

在底部附近你有一行:

stimulus= pygame.image.load('image_list')

您正在尝试加载标题为image_list的图片。那里没有文件扩展名,因此您的操作系统无法识别文件类型。但即使您确实包含了文件扩展名,我认为您正在尝试加载列表image_list中的各个图片,而这又是另一个故事。

答案 1 :(得分:1)

第一个错误与previous questiontypes= '*.tif'中的错误相同。这意味着types是一个字符串,但您实际上想要一个包含允许文件类型的元组:types = '*.tif',(逗号将其转换为元组)。所以你迭代'*.tif'中的字母并将它们传递给glob.glob,它会为你提供目录中的所有文件,当然image_list.append(pygame.image.load(artwork).convert())如果你传递它.py就行不通。stimulus = pygame.image.load('image_list') 1}}文件。

下一个错误是load行不起作用,因为您需要将完整的文件名或路径传递给stimulus函数。我认为您的current_image变量实际上应该是import glob import random import pygame pygame.init() clock = pygame.time.Clock() window = pygame.display.set_mode((640, 480)) file_types = '*.tif', # The comma turns it into a tuple. # file_types = ['*.tif'] # Or use a list. artfile_names = [] for file_type in file_types: artfile_names.extend(glob.glob(file_type)) image_list = [] for artwork in artfile_names: image_list.append(pygame.image.load(artwork).convert()) random.shuffle(image_list) index = 0 current_image = image_list[index] previous_time = pygame.time.get_ticks() done = False while not done: for event in pygame.event.get(): if event.type == pygame.QUIT: done = True # Calcualte the passed time, then increment the index, use # modulo to keep it in the correct range and finally change # the image. current_time = pygame.time.get_ticks() if current_time - previous_time > 500: # milliseconds index += 1 index %= len(image_list) current_image = image_list[index] previous_time = current_time # Draw everything. window.fill((30, 30, 30)) # Clear the screen. # Blit the current image. window.blit(current_image, (100, 100)) pygame.display.update() clock.tick(30)

这是一个完整的示例,它还向您展示了如何实现计时器。

In [1]: re.search(r"pi*", "piiig!!").group()
Out[1]: 'piii'