Pygame Error: Unsupported Image Format
Pygame Error: Unsupported Image Format
您好,我正在尝试按照上一个问题中的这些说明进行操作:
这是我目前拥有的代码,我不确定哪里出错了。
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()
底部附近有一行:
stimulus= pygame.image.load('image_list')
您在此处尝试加载标题为 image_list
的图像。那里没有文件扩展名,因此您的 OS 无法识别文件类型。但即使您确实包含了文件扩展名,我认为您是在尝试加载列表中的单个图像 image_list
,这完全是另外一回事了。
第一个错误与您的 相同:types= '*.tif'
。这意味着 types
是一个字符串,但您实际上想要一个具有允许文件类型的元组:types = '*.tif',
(逗号将它变成一个元组)。因此,您遍历 '*.tif'
中的字母并将它们传递给 glob.glob
,这会为您提供目录中的所有文件,当然 image_list.append(pygame.image.load(artwork).convert())
如果您传递它则无法工作,例如 .py
文件.
下一个错误是 stimulus = pygame.image.load('image_list')
行不起作用,因为您需要将完整的文件名或路径传递给 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)
您好,我正在尝试按照上一个问题中的这些说明进行操作:
这是我目前拥有的代码,我不确定哪里出错了。
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()
底部附近有一行:
stimulus= pygame.image.load('image_list')
您在此处尝试加载标题为 image_list
的图像。那里没有文件扩展名,因此您的 OS 无法识别文件类型。但即使您确实包含了文件扩展名,我认为您是在尝试加载列表中的单个图像 image_list
,这完全是另外一回事了。
第一个错误与您的 types= '*.tif'
。这意味着 types
是一个字符串,但您实际上想要一个具有允许文件类型的元组:types = '*.tif',
(逗号将它变成一个元组)。因此,您遍历 '*.tif'
中的字母并将它们传递给 glob.glob
,这会为您提供目录中的所有文件,当然 image_list.append(pygame.image.load(artwork).convert())
如果您传递它则无法工作,例如 .py
文件.
下一个错误是 stimulus = pygame.image.load('image_list')
行不起作用,因为您需要将完整的文件名或路径传递给 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)