首页 文章

pygame.error:文件不是Windows BMP文件

提问于
浏览
1

运行:
Mac OSX mountain Lion 10.8.3
Python 2.7.2
Pygame 1.9.2

我有一个简单的python pygame程序,它在屏幕上显示一个图像,这在我在IDE中运行时效果很好 . 当尝试使用py2app使其成为独立程序时出现问题我得到错误:

pygame.error: File is not a Windows BMP file

我做了一些研究,发现它可能是pygame或SDL_image.framework的错误,所以我重新安装了两个,我得到了同样的错误 . 但是,当我使用BMP图像时,程序工作正常,但我不能使用.png或.jpg等图像格式 .

window.py:

import pygame,sys
from pygame.locals import *

pygame.init()
size=[700,500]
screen=pygame.display.set_mode(size)
clock=pygame.time.Clock()

img = pygame.image.load("Images/img.png") # Error generated here

# -------- Main Program Loop -----------
while True:
    # ALL EVENT PROCESSING SHOULD GO BELOW THIS COMMENT
    for event in pygame.event.get():
        if event.type == QUIT:
            isRunning = False
            pygame.quit()
            sys.exit()

    screen.blit(img,(300,300))

    pygame.display.flip()
    clock.tick(20)

如果它有用,这是我的 setup.py 文件:

from setuptools import setup

APP = ['window.py']
DATA_FILES = [('', ['images'])]
OPTIONS = {'argv_emulation': True}

setup(
      app=APP,
      data_files=DATA_FILES,
      options={'py2app': OPTIONS},
      setup_requires=['py2app'],
      )

Problem Solution for 2.7.2:

原来我的pygame文件已经或已损坏 . 为了解决这个问题,我用新的pygame文件替换了应用程序中的旧pygame文件 . 应用程序中的pygame文件夹位于“app.app/Contents/Resources/lib/python2.7/lib-dynload” . 用这个替换旧的pygame文件夹,希望它可以工作:

https://dl.dropboxusercontent.com/u/84011326/Youtube%20files/pygame.zip

Other Solution

我下载了python版本2.7.5 for mac,这简单地修复了所有错误,因为无法加载pygame混音器,无法加载jpg和png图像 .

2 回答

  • 0

    我遇到了同样的问题 . 能够通过简单的python更新修复它 .

    适合初学者的快速解决方案:

    • 安装Python 2.7.5

    • 进入应用程序 - > Python 2.7 - >更新Shell配置文件

    • Python 2.7.5现在应该是你的默认python . 使用它(在终端中)运行您的应用程序,一切正常 .

    到目前为止,这是解决此问题的最简单方法 . 希望这可以帮助 .

  • 0

    我是python中的一个相对noob . 操作系统升级后刚刚安装了python 3.3.5和pygame 1.9.2(推荐) . 如果这个问题与pygame没有识别非BMP图像,所以我之前的所有工作都没有运行 .

    在阅读了这里和其他地方的许多类似问题后,我决定回滚版本 . 来自pygame site(http://pygame.info/downloads/)的Python 3.3.0和pygame-1.9.2a0.win32-py3.3.msi不起作用 .

    进一步回滚到最后一台机器python 3.2.3和pygame pygame-1.9.2a0.win32-py3.2.msi的组合似乎工作 . OS Win 7. >>> pygame.image.get_extended = 1

相关问题