Maison  >  Article  >  développement back-end  >  Comment puis-je convertir le contenu du canevas Tkinter en images ?

Comment puis-je convertir le contenu du canevas Tkinter en images ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-01 07:51:02146parcourir

How Can I Convert Tkinter Canvas Content to Images?

Conversion du contenu du canevas en images

La conversion du contenu d'un canevas Tkinter en image permet d'autres manipulations, telles que la rotation, la mise à l'échelle, et ajustement des coordonnées. Pour réaliser cette conversion, plusieurs approches sont disponibles.

Génération PostScript

Une méthode consiste à générer un document PostScript qui peut être traité ultérieurement par des outils externes comme ImageMagick ou Ghostscript. . Voici un exemple :

<code class="python">from Tkinter import *
root = Tk()
cv = Canvas(root)
cv.create_rectangle(10,10,50,50)
cv.pack()
root.mainloop()

cv.update()
cv.postscript(file="file_name.ps", colormode='color')

root.mainloop()</code>

Dessin parallèle avec PIL

Une autre approche consiste à dessiner la même image sur la toile et sur une image PIL en parallèle. Cela permet la manipulation et la sauvegarde des images côté PIL tout en conservant le canevas visible. Voici un exemple basé sur l'approche mentionnée dans « Sauvegarder un dessin sur toile Tkinter (Python) » :

<code class="python">from Tkinter import *
import Image, ImageDraw

width = 400
height = 300
center = height//2
white = (255, 255, 255)
green = (0,128,0)

root = Tk()

# Tkinter create a canvas to draw on
cv = Canvas(root, width=width, height=height, bg='white')
cv.pack()

# PIL create an empty image and draw object to draw on
# memory only, not visible
image1 = Image.new("RGB", (width, height), white)
draw = ImageDraw.Draw(image1)

# do the Tkinter canvas drawings (visible)
cv.create_line([0, center, width, center], fill='green')

# do the PIL image/draw (in memory) drawings
draw.line([0, center, width, center], green)

# PIL image can be saved as .png .jpg .gif or .bmp file (among others)
filename = "my_drawing.jpg"
image1.save(filename)

root.mainloop()</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn