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

ImageMagick 错误:'mogrify:无法打开图像问题'

无法使用动态输入python下载图像

无法通过共享扩展打开/读取图像

magick 命令给出无法打开图像错误

R:保存绘图 - 仍在 RStudio 中时无法打开图像