python - 为什么 pygame.surface.get_view() 只有在表面旋转时才会失败?
问题描述
将图像上传到表面并使用 get_view() 函数工作正常,我能够利用该函数的原始字节内容。但是,如果我尝试在旋转表面上 get_view() 它会失败并显示以下内容:(附加说明它不会在 90 度增量上失败)。“ValueError:字节不连续”以下是简化形式的问题:
Python 版本 3.8.1
Pygame 版本 1.9.6
操作系统:Windows 10 专业版
import pygame as pg
Surf = pg.image.load('C:/TimW/Tmp_Images/Test3.png') # Works
Surf_View = Surf.get_view() # Works
Surf_New = pg.transform.rotate(Surf,10) #Works
Surf_New_View = Surf_New.get_view() #Works
x = Surf_New_View.raw #Fails
print('done')
注意:经过进一步测试......其他一些旋转角度也可以工作,我循环了 360 个角度,大约有 17 个工作。我还尝试了 32 位 python 和几个版本。在进一步追踪之后,我相信这是一些我无法解决的低级数学问题......每当发生这种连续错误时,内置函数中也会引发异常......
特别是“{'ArithmeticError': , 'AssertionError': , 'AttributeError': , 'BaseException': , 'BlockingIOError': , 'BrokenPipeError': , 'BufferError': , 'BytesWarning': , 'ChildProcessError': , 'ConnectionAbortedError ': , 'ConnectionError': , 'ConnectionRefusedError': , 'ConnectionResetError': , 'DeprecationWarning': , ...}"
解决方案
所有这些问题都解决了。我不知道为什么它会对旋转/get_view 功能产生影响,但是在加载图像时,您必须使用 convert_alpha。这是可选的,不知道为什么它可以解决这个问题,但确实可以。
pg.image.load('C:/TimW/Tmp_Images/Test3.png').convert_alpha()
推荐阅读
- python - Django过滤器排除外键
- haskell - Haskell嵌套列表中的帕斯卡三角形
- r - R从数据表中提取值给定存储在另一个表中的索引
- javascript - 在(某种)离线 Chrome 应用程序中创建设置页面
- jquery - css 在悬停时运行关键帧并单击
- reactjs - 将 sass 变量导入 gatsby 组件
- javascript - web:如何放大网格项目并将项目集中在视口中
- python - 带通滤波器 ValueError:数字滤波器临界频率必须为 0 < Wn < 1
- python - 启动字典的 Python 字典语法
- c# - 使用 Click 事件更改对象的参考移动点