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("Bas e64 Encoder / Decoder")
############### ############### ############### ############### ############### #
# Menu Bar
############### ############### ############### ############### ############### #
self.menubar = Menu(root)
# create a pulldown menu, and add it to the menu bar
self.filemenu = Menu(self.menub ar, tearoff=0)
self.filemenu.a dd_command(labe l="Display!",
command=self.Di splay)
self.filemenu.a dd_separator()
self.filemenu.a dd_command(labe l="Quit!", command=root.qu it)
self.menubar.ad d_cascade(label ="File", menu=self.filem enu)
# display the menu
root.config(men u=self.menubar)
############### ############### ############### ############### ############### #
# Main
############### ############### ############### ############### ############### #
# File Input
self.FileInputF rame = Frame(root)
self.FileInputF rame.pack(side= TOP, fill=X)
self.FileInputL ine = Entry(self.File InputFrame,
bg="white",
width=70)
self.FileInputL ine.pack(side=L EFT, fill=X, expand=1)
# Display Area
self.DisplayFra me = Frame(root)
self.DisplayFra me.pack(side=TO P, fill=BOTH, expand=1)
self.DisplayTex t = Text(self.Displ ayFrame,
bg="lightblue" ,
width=95,
height=40)
self.DisplayTex t.pack(side=LEF T, fill=BOTH, expand=1)
root.bind("<Ret urn>",self.Enco de)
def Encode(self,eve nt):
'''
Take's the string from (self.FileInput Line),
converts it to base64 then desplays it in (self.DisplayTe xt)
'''
self.DisplayTex t.delete(1.0,EN D)
info = self.FileInputL ine.get()
if info == "":
self.DisplayTex t.insert(END, "...Empty String...")
else:
try:
file = open(info)
try:
while 1:
line = file.readline()
if not line:
break
Encode = b64encode(line)
self.DisplayTex t.insert(END, Encode)
except:
self.DisplayTex t.insert(END, "...Data Problem...")
except:
self.DisplayTex t.insert(END, "...No Sutch File...")
def Display(self):
'''
Take's the string from (self.DisplayTe xt), Creats a topleval
frame and displays the Data
'''
info = self.DisplayTex t.get(1.0,END)
# Display as Image
try:
self.DisplayIma ge = Toplevel()
self.InfoDispla y = PhotoImage(data =info)
PhotoSize =
[self.InfoDispla y.width(),self. InfoDisplay.hei ght()]
self.DisplayIma geCanvas = Canvas(
self.DisplayIma ge,
width=150,
height=PhotoSiz e[1] + 15)
self.DisplayIma geCanvas.pack(f ill=BOTH, expand=1)
self.InfoDispla y2 = self.DisplayIma geCanvas.create _image(
PhotoSize[0] / 2 + 10,
PhotoSize[1] / 2 + 10,
image=self.Info Display)
self.InfoDispla y2 = self.DisplayIma geCanvas
except:pass
# Display as Text
self.DisplayIma geText = Text(
self.DisplayIma ge,
width=70,
height=30)
self.DisplayIma geText.pack(fil l=BOTH, expand=1)
Decode = b64decode(info)
self.DisplayIma geText.insert(E ND, 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("Bas e64 Encoder / Decoder")
############### ############### ############### ############### ############### #
# Menu Bar
############### ############### ############### ############### ############### #
self.menubar = Menu(root)
# create a pulldown menu, and add it to the menu bar
self.filemenu = Menu(self.menub ar, tearoff=0)
self.filemenu.a dd_command(labe l="Display!",
command=self.Di splay)
self.filemenu.a dd_separator()
self.filemenu.a dd_command(labe l="Quit!", command=root.qu it)
self.menubar.ad d_cascade(label ="File", menu=self.filem enu)
# display the menu
root.config(men u=self.menubar)
############### ############### ############### ############### ############### #
# Main
############### ############### ############### ############### ############### #
# File Input
self.FileInputF rame = Frame(root)
self.FileInputF rame.pack(side= TOP, fill=X)
self.FileInputL ine = Entry(self.File InputFrame,
bg="white",
width=70)
self.FileInputL ine.pack(side=L EFT, fill=X, expand=1)
# Display Area
self.DisplayFra me = Frame(root)
self.DisplayFra me.pack(side=TO P, fill=BOTH, expand=1)
self.DisplayTex t = Text(self.Displ ayFrame,
bg="lightblue" ,
width=95,
height=40)
self.DisplayTex t.pack(side=LEF T, fill=BOTH, expand=1)
root.bind("<Ret urn>",self.Enco de)
def Encode(self,eve nt):
'''
Take's the string from (self.FileInput Line),
converts it to base64 then desplays it in (self.DisplayTe xt)
'''
self.DisplayTex t.delete(1.0,EN D)
info = self.FileInputL ine.get()
if info == "":
self.DisplayTex t.insert(END, "...Empty String...")
else:
try:
file = open(info)
try:
while 1:
line = file.readline()
if not line:
break
Encode = b64encode(line)
self.DisplayTex t.insert(END, Encode)
except:
self.DisplayTex t.insert(END, "...Data Problem...")
except:
self.DisplayTex t.insert(END, "...No Sutch File...")
def Display(self):
'''
Take's the string from (self.DisplayTe xt), Creats a topleval
frame and displays the Data
'''
info = self.DisplayTex t.get(1.0,END)
# Display as Image
try:
self.DisplayIma ge = Toplevel()
self.InfoDispla y = PhotoImage(data =info)
PhotoSize =
[self.InfoDispla y.width(),self. InfoDisplay.hei ght()]
self.DisplayIma geCanvas = Canvas(
self.DisplayIma ge,
width=150,
height=PhotoSiz e[1] + 15)
self.DisplayIma geCanvas.pack(f ill=BOTH, expand=1)
self.InfoDispla y2 = self.DisplayIma geCanvas.create _image(
PhotoSize[0] / 2 + 10,
PhotoSize[1] / 2 + 10,
image=self.Info Display)
self.InfoDispla y2 = self.DisplayIma geCanvas
except:pass
# Display as Text
self.DisplayIma geText = Text(
self.DisplayIma ge,
width=70,
height=30)
self.DisplayIma geText.pack(fil l=BOTH, expand=1)
Decode = b64decode(info)
self.DisplayIma geText.insert(E ND, Decode)
root = Tk()
app = App(root)
root.mainloop()
############### ############### ############### ############### ############### ##
Comment