在python 3中从pygame表面加载tkinter中的图像

我想从pygame表面加载tkinter中的图像,我遇到了问题.

这就是我目前正在尝试的:

image= pygame.image.tostring(surf, 'RGB')
tkimage= tkinter.PhotoImage(data= image)
canvas.create_image(0, 0, tkimage)

但不幸的是我得到了这个错误:

_tkinter.TclError: couldn't recognize image data

最佳答案
PhotoImage class只能直接从文件或base64编码的字符串读取GIF和PGM / PPM文件.

您应该使用Python Imaging Library来加载和创建Tk的图像.

这是一个例子:

import pygame
from PIL import Image
import ImageTk
import Tkinter

# load image in pygame
pygame.init()
surf = pygame.image.load('bridge.png')

# export as string / import to PIL
image_str = pygame.image.tostring(surf, 'RGB')         # use 'RGB' to export
w, h      = surf.get_rect()[2:]
image     = Image.fromstring('RGB', (w, h), image_str) # use 'RGB' to import

# create Tk window/widgets
root         = Tkinter.Tk()
tkimage      = ImageTk.PhotoImage(image) # use ImageTk.PhotoImage class instead
canvas       = Tkinter.Canvas(root)

canvas.create_image(0, 0, image=tkimage)
canvas.pack()
root.mainloop()
点赞