Python - 无法打开图像
Posted
技术标签:
【中文标题】Python - 无法打开图像【英文标题】:Python - couldn't open image 【发布时间】:2018-04-02 17:54:27 【问题描述】:我的 Python 游戏中有错误的图像:
我想运行我的应用程序,但看到此错误,如何解决?
无法打开格式正确的图像,这是一个用 Python 制作的简单游戏
import random
from livewires import games
games.init(screen_width=640,screen_height=480,fps=50)
class Ship(games.Sprite):
def update(self):
if games.keyboard.is_pressed(games.K_RIGHT):
self.angle+=1
if games.keyboard.is_pressed(games.K_LEFT):
self.angle-=1
if games.keyboard.is_pressed(games.K_1):
self.angle=0
if games.keyboard.is_pressed(games.K_2):
self.angle=90
if games.keyboard.is_pressed(games.K_3):
self.angle=180
if games.keyboard.is_pressed(games.K_4):
self.angle=270
class Asteroid(games.Sprite):
SMALL = 1
MEDIUM = 2
LARGE = 3
images=SMALL : games.load_image("asteroida_s.bmp"),
MEDIUM : games.load_image('asteroida_m.bmp'),
LARGE : games.load_image('asteroida_l.bmp')
SPEED=2
def main():
nebula_image=games.load_image("mglawica.jpg")
games.screen.background=nebula_image
for i in range(8):
x=random.randrange(games.screen.width)
y=random.randrange(games.screen.height)
size-random.choice([Asteroid.SMALL,Asteroid.MEDIUM,Asteroid.LARGE,])
new_asteroid=Asteroid(x=x,y=y,size=size)
game.screen.add(new_asteroid)
games.screen.mainloop()
def main():
nebula_image=games.load_image("mglawica.jpg",transparent=false)
games.screen.background=nebula_image
ship_image=games.load_image("statek.bmp")
the_ship=Ship(image=ship_image,
x=games.scren.width/2,
y=games.scren.height/2)
games.scren.add(the_ship)
games.screen.mainloop()
def play(self):
nebula_image=games.load_image("mglawica.jpg")
games.screen.background=nebula_image
self.advance()
games.screen.mainloop()
def advanced(self):
self.level+=1
BUFFER=150
for i in range(self.level):
x_min=random.randrage(BUFFER)
y_min=BUFFER-x_min
x=self.ship.x+x_distance
y=self.ship.y+y_distance
x%=games.screen.width
y%=games.screen.height
new_asteroid=Asteroid(game=self,x=x,y=y,size=Asteroid.LARGE)
game.screen.add(new_asteroid)
def end():
end_message=games.Message(value="Koniec gry",
size=90,
color=color.red,
x=games.screen.width/2,
y=games.screen.height/2,
lifetime=10*games.scren.fps,after_death=games.screen.quit,
is_sollideable=False)
games.scren.add(end_message)
def die(self):
if self.size !=Asteroid.SMALL:
for i in range(Asteroid.SMALL):
new_asteroid=Asteroid(x=self.x,
y=self.y,
size=self.size-1)
game.screen.add(new_asteroid)
self.destroy()
【问题讨论】:
您的代码缩进全部关闭。缩进对python至关重要。我也不知道“livewire”是什么。 【参考方案1】:虽然您的代码非常混乱(没有缩进),但我想我有办法解决它。首先,我质疑您是否需要导入 livewire,并且想知道您为什么将此问题标记为 pygame。你从来没有导入过 pygame。所以我的解决方案会用pygame编写。
首先,您必须加载图像(如果您想将其分配给变量):
image = pygame.image.load(filename)
然后,您必须转换 Surface,或者基本上只是转换图像。
image = pygame.image.load(filename).convert()
【讨论】:
以上是关于Python - 无法打开图像的主要内容,如果未能解决你的问题,请参考以下文章
无法使用带有 Python 3 的 See3CAM 读取图像并打开 CV