我有一个pySimpleGUI程序,它从包含JPEG图像的内存缓冲区创建图像。
from PIL import ImageTk
image = ImageTk.PhotoImage( data=buf) # PhotoImage will detect a JPEG format
self.win["-IMAGE-'].update( data=image)我想将我的应用程序转换为pySDL2。
由于pySimpleGUI和pySDL都是基于PIL的,所以我希望可以轻松地进行转换,但我无法找到从缓冲区创建SDL映像的方法。
有办法吗?
发布于 2022-05-11 18:17:56
不确定这是可行的,未经测试,但可能会使你走上正确的轨道。如果你想要更多的细节,请访问https://rubato.app/。图像类的完整源代码就在那里。
@staticmethod
def from_surface(surface: sdl2.surface.SDL_Surface) -> "Image":
"""
Creates an image from an SDL surface.
Args:
surface: the surface to create the image from.
Returns:
The created image.
"""
# untested
image = Image()
image.image = surface
return image
@staticmethod
def from_buffer(buffer: bytes) -> "Image":
"""
Creates an image from a buffer.
Args:
buffer: bytes containing the image data.
Returns:
The image created from the buffer.
"""
# untested
rw = sdl2.SDL_RWFromMem(buffer, len(buffer))
surface_temp = sdl2.sdlimage.IMG_Load_RW(rw, 1)
if surface_temp is None:
raise Exception(sdl2.sdlimage.IMG_GetError())
surface = sdl2.SDL_ConvertSurfaceFormat(surface_temp, sdl2.SDL_PIXELFORMAT_RGBA8888, 0).contents
sdl2.SDL_FreeSurface(surface_temp)
return Image.from_SDL_Surface(surface)https://stackoverflow.com/questions/69934827
复制相似问题