加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – pysdl2访问违规显示图像

发布时间:2020-12-20 13:41:24 所属栏目:Python 来源:网络整理
导读:我正试图在 Windows机器上开始使用pysdl2.到目前为止,我已经复制并粘贴了 Hello World tutorial,所以我可以看看它是否真的有效!事实并非如此. import sysimport sdl2.extRESOURCES = sdl2.ext.Resources(__file__,"resources")sdl2.ext.init()window = sdl2
我正试图在 Windows机器上开始使用pysdl2.到目前为止,我已经复制并粘贴了 Hello World tutorial,所以我可以看看它是否真的有效!事实并非如此.

import sys
import sdl2.ext

RESOURCES = sdl2.ext.Resources(__file__,"resources")

sdl2.ext.init()

window = sdl2.ext.Window("Hello World!",size=(640,580))
window.show()

factory = sdl2.ext.SpriteFactory(sdl2.ext.SOFTWARE)
sprite = factory.from_image(RESOURCES.get_path("testimage.png"))

spriterenderer = factory.create_sprite_render_system(window)
spriterenderer.render(sprite)

processor = sdl2.ext.TestEventProcessor()
processor.run(window)

sdl2.ext.quit()

当我运行程序时,它会短暂显示一个窗口,然后崩溃并出现此错误:

Traceback (most recent call last):
  File "test.py",line 15,in <module>
    spriterenderer.render(sprite)
  File "C:Python27libsite-packagessdl2extsprite.py",line 643,in render
    surface.SDL_BlitSurface(sprites.surface,None,self.surface,r)
WindowsError: exception: access violation reading 0x03F3B000

虽然地址每次都不同.

这似乎只发生在较大的图像上 – 如果我将图像调整为245 x 245像素或更小,那么它将毫无怨言地显示.我正在使用Pillow来改进格式支持,并在bmp,png和jpg中遇到同样的问题.

编辑添加:

今天,我一直在试图理解这一点.我的测试图像是245×245像素将不再起作用,除非我在创建spriterenderer和调用render(sprite)之间做了一些事情 – 我在这些行之间添加了打印精灵,看看是否真的存在变量,有,并显示.注释掉打印行并且它失败了.然后我将相同的图像放大,500×500并再次出现访问冲突错误.我不知道它发生了什么.

解决方法

您使用的是什么版本的SDL?这是Mercurial的最新开发项目吗?

如果是这样,它可能是不稳定的,并且有一个不允许它在Windows上正常运行的错误,在我的情况下,它在Arch和Windows上都可以正常运行,并且版本稳定.

返回的错误是WindowsError,它可能来自DLL文件的使用.

如果您使用的是不稳定版本,请尝试使用稳定版本.之后它可能会起作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读