알파 값 (절임 배열 here)의 숫자가 작은 배열을 표면에 적용하려고 시도했지만 계속 ValueError: unsupported colormasks for alpha reference array
이 표시됩니다.pygame.surfarray.pixels_alpha가 ValueError를 던지는 이유는 무엇입니까?
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-81-8c19259f8aa5> in <module>()
----> 1 pxa = pg.surfarray.pixels_alpha(s)
/usr/lib/python2.7/dist-packages/pygame/surfarray.pyc in pixels_alpha(surface)
206 return numericsf.pixels_alpha (surface)
207 elif __arraytype == "numpy":
--> 208 return numpysf.pixels_alpha (surface)
209 raise NotImplementedError("surface arrays are not supported")
210
/usr/lib/python2.7/dist-packages/pygame/_numpysurfarray.pyc in pixels_alpha(surface)
295 start = 3
296 else:
--> 297 raise ValueError("unsupported colormasks for alpha reference array")
298
299 array = numpy.ndarray \
ValueError: unsupported colormasks for alpha reference array
pixels_alpha
참조 문은 픽셀 당 알파 값을 가진 32 비트 Surface
가 필요하다고 언급 :
s = pygame.Surface((100, 100))
s.fill((126, 126, 126)) # make it grey
pxa = pg.surfarray.pixels_alpha(s)
여기서 전체 추적한다. 표면 비트 수를 Surface.get_bitsize
으로 확인하고 32
을 반환하는 것으로 확인했습니다. 즉, 픽셀 당 알파 값이 있는지 확인하는 방법을 모릅니다. 이게 문제일까요? 그렇다면 어떻게 확인합니까? 그렇지 않다면 나는 무엇을 놓치고 있습니까?
감사합니다. 당신은 픽셀 단위의 알파 초기화해야
다시 한번! 매력처럼 작동합니다, 감사합니다! 픽셀 당 알파 비즈니스가 정확히 무엇인지 알고 계십니까? – blz
특히. 픽셀 당 알파가 없으면 블리트가 훨씬 빨라지지만이 경우 기본적으로 32 비트가 사용되는 이유는 잘 모르겠습니다. // 또한 업데이트 된 답변에 유의하십시오. – Veedrac
감사합니다. 그것은 많은 일을 단순화합니다! 나는 지금 또 다른 (관련) 문제가 있는데, 나는이 질문을 별도의 질문에 게시했다. 시간이 있으시면 좀 봐 주시겠습니까? 감사! http://stackoverflow.com/questions/19058022/why-is-surface-unlock-failing-to-unlock-the-surface-for-blitting – blz