Salvar imagem contida dentro do Canvas em JPG com Tkinter

262 views
Skip to first unread message

Diunior Ronaldo Brum Lauser

unread,
Sep 4, 2016, 6:22:03 PM9/4/16
to Python Brasil
Boa tarde Pessoal sou novo em python e utilizo o tkinter como GUI ,estou querendo salvar imagem que coloquei dentro do canvas em jpg, mas toda vez que salvo aparece um arquivo em branco
aki vai parte do codigo.

class telaQR:
def __init__(self,master):
self.labQr = Label( text="Texto do QRcode:", font="Arial, 12")
self.labQr.grid(row=0, column=0, padx=15, pady=15)
self.entrQr = Entry( width=70)
self.entrQr.grid(row=0, column=1, padx=5)

self.labQrNome = Label(text="Nome do QRcode:")
self.labQrNome.place(x=300,y=105)
self.entrQrNome = Entry(width=30)
self.entrQrNome.place(x=420,y=105)

self.botQrCriar = Button( text="Gerar QRcode", command=self.gerarQR, width=13, height=2, font="Verdana, 13")
self.botQrCriar.place(x=320, y=220)
self.botQrNome = Button( text="Salvar Como", command=self.salvarComo, width=13, height=2, font="Verdana, 13")
self.botQrNome.place(x=480, y=220)
self.panel = Canvas(width=240,height=240,background="black")
self.panel.place(x=40,y=70)

self.file_opt = options = {}
options['defaultextension'] = '.jpg'
options['filetypes'] = [('all files', '.*'), ('text files', '.jpg')]
options['initialdir'] = 'C:\Users\TI\Pictures'
options['initialfile'] = 'nome do arquivo.jpg'
options['parent'] = root
options['title'] = 'Salvar Como'
    
    def gerarQR(self):
    self.img = ImageTk.PhotoImage(file=r"C:\Users\TI\Pictures\Saved Pictures\palphas.jpeg")
self.panel.create_image(0, 0, image=self.img, anchor=NW)
self.panel.image = self.img

    def salvarComo(self):
    imgSave = self.panel.getint()
filename = tkFileDialog.asksaveasfilename(**self.file_opt)
if filename:
return open(filename, 'w')
filename.write(imgSave)
filename.close()

root = Tk()
telaQR(root)
root.geometry("620x380+150+50")
root.configure(background='Grey11')
root.title("Gerar QRcode")
root.mainloop()



cptx032

unread,
Sep 5, 2016, 7:26:14 AM9/5/16
to Python Brasil
Diunior, testei aqui um canvas e chamei a função "getint", porque é o retorno dela que você salva no arquivo. Essa função retorna sempre 0 (zero). Acho que seria melhor usar a função "postscript" do Canvas, ela exporta o conteúdo do canvas para um arquivo ghostcript. Se for necessário que a imagem tenha o formato JPEG você pode tentar utilizar o PIL pra converter de ghostscript para JPEG. Você pode dar uma olhada aqui:

Diunior Ronaldo Brum Lauser

unread,
Sep 6, 2016, 11:18:18 AM9/6/16
to Python Brasil


Em segunda-feira, 5 de setembro de 2016 07:26:14 UTC-4, cptx032 escreveu:
Diunior, testei aqui um canvas e chamei a função "getint", porque é o retorno dela que você salva no arquivo. Essa função retorna sempre 0 (zero). Acho que seria melhor usar a função "postscript" do Canvas, ela exporta o conteúdo do canvas para um arquivo ghostcript. Se for necessário que a imagem tenha o formato JPEG você pode tentar utilizar o PIL pra converter de ghostscript para JPEG. Você pode dar uma olhada aqui:

obrigado consegui solucionar meu problema
 
Reply all
Reply to author
Forward
0 new messages