I have bean trying to get my head around reading .GIF files from base64 strings, Basically I need to specify a filename and convert it to base64 then I can copy/past the string to wear I want it. Cold somebody check this for me to see what I have done wrong:
If you run this program and enter a path for a .GIF file into the white box and hit <Enter> it should display the string in the blue box. To test this if you click the menu File Display it will create a top level window displaying the image and giving the original string underneath. The bit I can not understand: It will generate the base64 string but when trying to display it, it reads the string up until the first ("/n") ("Cg==") <Return> and then stops. The base 64 string seams to be complete but when converted back it is incomplete. Thanks Jay Dee .......................START...................... from Tkinter import * from base64 import * ############################################################################ ############################################################################ # Module: Base64 Encoder / Decoder.py # Author: Jay Dee # Date: 08/04/2006 # Version: Draft 0.1 # Coments: A Base64 Encoder / Decoder for converting files into Base64 strings ############################################################################ ############################################################################ class App: def __init__(self, root): root.title("Base64 Encoder / Decoder") ############################################################################ # Menu Bar ############################################################################ self.menubar = Menu(root) # create a pulldown menu, and add it to the menu bar self.filemenu = Menu(self.menubar, tearoff=0) self.filemenu.add_command(label="Display!", command=self.Display) self.filemenu.add_separator() self.filemenu.add_command(label="Quit!", command=root.quit) self.menubar.add_cascade(label="File", menu=self.filemenu) # display the menu root.config(menu=self.menubar) ############################################################################ # Main ############################################################################ # File Input self.FileInputFrame = Frame(root) self.FileInputFrame.pack(side=TOP, fill=X) self.FileInputLine = Entry(self.FileInputFrame, bg="white", width=70) self.FileInputLine.pack(side=LEFT, fill=X, expand=1) # Display Area self.DisplayFrame = Frame(root) self.DisplayFrame.pack(side=TOP, fill=BOTH, expand=1) self.DisplayText = Text(self.DisplayFrame, bg="lightblue", width=95, height=40) self.DisplayText.pack(side=LEFT, fill=BOTH, expand=1) root.bind("<Return>",self.Encode) def Encode(self,event): ''' Take's the string from (self.FileInputLine), converts it to base64 then desplays it in (self.DisplayText) ''' self.DisplayText.delete(1.0,END) info = self.FileInputLine.get() if info == "": self.DisplayText.insert(END, "...Empty String...") else: try: file = open(info) try: while 1: line = file.readline() if not line: break Encode = b64encode(line) self.DisplayText.insert(END, Encode) except: self.DisplayText.insert(END, "...Data Problem...") except: self.DisplayText.insert(END, "...No Sutch File...") def Display(self): ''' Take's the string from (self.DisplayText), Creats a topleval frame and displays the Data ''' info = self.DisplayText.get(1.0,END) # Display as Image try: self.DisplayImage = Toplevel() self.InfoDisplay = PhotoImage(data=info) PhotoSize = [self.InfoDisplay.width(),self.InfoDisplay.height()] self.DisplayImageCanvas = Canvas( self.DisplayImage, width=150, height=PhotoSize[1] + 15) self.DisplayImageCanvas.pack(fill=BOTH, expand=1) self.InfoDisplay2 = self.DisplayImageCanvas.create_image( PhotoSize[0] / 2 + 10, PhotoSize[1] / 2 + 10, image=self.InfoDisplay) self.InfoDisplay2 = self.DisplayImageCanvas except:pass # Display as Text self.DisplayImageText = Text( self.DisplayImage, width=70, height=30) self.DisplayImageText.pack(fill=BOTH, expand=1) Decode = b64decode(info) self.DisplayImageText.insert(END, Decode) root = Tk() app = App(root) root.mainloop() ############################################################################# -- http://mail.python.org/mailman/listinfo/python-list