J
Jay
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
ass
# 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()
#############################################################################
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
# 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()
#############################################################################