将图像平移到画布中心python_Python Tkinter将画布另存为使用PIL的图像

我有这段代码可让用户在画布上绘图并将其保存为jpeg文件。Python Tkinter将画布另存为使用PIL的图像

正如在this post中提到的,我试着在画布上和内存中使用PIL并行绘制,这样我就可以将它保存为jpeg而不是postscript。它似乎在工作,直到我发现我用PIL保存的一些图像与画布上绘制的图像不一样。

我假设canvas.create_line和draw.line从PIL图像绘制模块的功能类似,应该给出类似的输出。

下面是什么地方出了错:

例如,当我画一个“T”,它似乎好(左是我的画,右边是保存图像)。

但是,当我画一个 “A”,输出图像似乎有点不可思议。

这是我当前的代码:

import Tkinter as tk

import Image,ImageDraw

class ImageGenerator:

def __init__(self,parent,posx,posy,*kwargs):

self.parent = parent

self.posx = posx

self.posy = posy

self.sizex = 200

self.sizey = 200

self.b1 = "up"

self.xold = None

self.yold = None

self.coords= []

self.drawing_area=tk.Canvas(self.parent,width=self.sizex,height=self.sizey)

self.drawing_area.place(x=self.posx,y=self.posy)

self.drawing_area.bind("", self.motion)

self.drawing_area.bind("", self.b1down)

self.drawing_area.bind("", self.b1up)

self.button=tk.Button(self.parent,text="Done!",width=10,bg='white',command=self.save)

self.button.place(x=self.sizex/7,y=self.sizey+20)

self.button1=tk.Button(self.parent,text="Clear!",width=10,bg='white',command=self.clear)

self.button1.place(x=(self.sizex/7)+80,y=self.sizey+20)

self.image=Image.new("RGB",(200,200),(255,255,255))

self.draw=ImageDraw.Draw(self.image)

def save(self):

print self.coords

self.draw.line(self.coords,(0,128,0),width=3)

filename = "temp.jpg"

self.image.save(filename)

def clear(self):

self.drawing_area.delete("all")

self.coords=[]

def b1down(self,event):

self.b1 = "down"

def b1up(self,event):

self.b1 = "up"

self.xold = None

self.yold = None

def motion(self,event):

if self.b1 == "down":

if self.xold is not None and self.yold is not None:

event.widget.create_line(self.xold,self.yold,event.x,event.y,smooth='true',width=3,fill='blue')

self.coords.append((self.xold,self.yold))

self.xold = event.x

self.yold = event.y

if __name__ == "__main__":

root=tk.Tk()

root.wm_geometry("%dx%d+%d+%d" % (400, 400, 10, 10))

root.config(bg='white')

ImageGenerator(root,10,10)

root.mainloop()

我去哪儿错了,我应该怎么做才能挽救被帆布为JPEG图像上绘制完全相同的画面?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值