Upload image in tkinter from pygame surface in python 3

I would like to load an image in tkinter from the pygame surface, and I am having a problem.

This is what I'm trying now:

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

but I unfortunately get this error:

 _tkinter.TclError: couldn't recognize image data 
+4
source share
2 answers

PhotoImage class can only read GIF and PGM / PPM files, either directly from the file or as a base64 encoded string.


You can use the Python Imaging Library to upload and create images for Tk.

Here is an example:

 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() 

enter image description here

+2
source

------- UPDATE ------

 import pygame from pygame.locals import * from PIL import Image import ImageTk import Tkinter # load image in pygame pygame.init() surf = pygame.image.load('pic_temp.png') # you can use any Surface a Camers is also an Surface mode = "RGB" # export as string / import to PIL image_str = pygame.image.tostring(surf, mode) # use 'RGB' to export size = (640, 480) #image = Image.fromstring(mode, size, image_str) # use frombuffer() - fromstring() is no longer supported image = Image.frombuffer(mode, size, image_str, 'raw', mode, 0, 1) # use 'RGB' to import # create Tk window/widgets root = Tkinter.Tk() tkimage = ImageTk.PhotoImage(image) # use ImageTk.PhotoImage class instead label = Tkinter.Label(root, image=tkimage) label.pack() root.mainloop() 
0
source

Source: https://habr.com/ru/post/1447084/


All Articles