Skip to content

Commit 553a5a2

Browse files
authored
Add files via upload
1 parent af07eac commit 553a5a2

2 files changed

Lines changed: 81 additions & 0 deletions

File tree

ReadMe.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
The app reads content from a text file and converts it to a BMP image. The image is in 640x480 8 bit BMP format.
2+
3+
Press the "Convert" button to load your text file. Choose a filename and folder to save the BMP file when prompted. The program will display the resulting image. You will find the BMP file in the folder where you have saved it for any further manipulation, for storing or sharing it.
4+
You can have fun trying to spot recognizable shapes (pareidolias) in the resulting image.

Txt2BMP_1.1.0.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import tkinter as tk
2+
import tkinter.ttk as ttk
3+
from tkinter.filedialog import asksaveasfilename
4+
from tkinter.filedialog import askopenfilename
5+
import os
6+
from tkinter import messagebox
7+
import shutil
8+
from PIL import ImageTk, Image
9+
10+
#create main window
11+
def create_main_window():
12+
global top
13+
global root
14+
img=b'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAAAAABWESUoAAABJWlDQ1BJQ0MgcHJvZmlsZQAAKJGdkM1Kw0AUhb9WqVUUBEVBXGThtuDGrtz4g8FFobYRjK7SSYvFJIYkpfgGfRN9mC4EwUfwARRceya6cGE2DlzOx+Xec2YG6k5k4nxxH+KkyNzekX/lXztLbzRYZ5km24HJ007/zKPyfL5Ss/rSsl7Vc3+eRjjMjXSuSkyaFVA7FLenRWpZxead1zsRz8ROGCeh+Em8F8ahZbvbi6OJ+fG0t1kdJpd921ft4nJOhy4OAyaMiShoSRN1TmlzIHXJCHggx0gjhupNNVNwK8rl5HIs8kS6TUXeTpnXVcpAHmN52YR7YnnaPOz/fq99XJSbta15GmRB2VpQ1UcjeH+ENR82nmHlpiKr+fttFTPtcuafb/wCwG5QURqfn2MAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfmBhAJCy+UZC8dAAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAAAZhJREFUOMvNk09IVFEUh78Xb4aExMVUEGEimOKiyFy0iQTRhWQtWlSLJITXMsxdbUJSCdqIgTs3KaggiIQaErkYoyLd2Az4jwqJFOSFpSM6/96vxXNwrjO2zW917r3f5RzuPccS/+YY/1+w98Odxa+rqdMllSHT0B5bgxf8Dev5D2WREZYauD6yuO6uTD3i5LiXI0RKQ6/jfuh9aaTPOyCsXTof3b+08YApU/Ae8zE7769rlTMLbpYwT6cM3gM4H1IZoYdlU0gOTYw+C/Hkjy94tbVp5eK+wIkJSb9pk9JJg5Sk9Cu6haR1Xkrj5vsNS1Kyhe82/OwjBmUjhlAOYDvdYTRXRvOo8hMvdmz3XnD2sgVvO/b+5t2np0DrTYBg3aT9JjJdDXCmOdMAp5qAs/4iUcidiwkdyvaJh/bY3QAA0wNGkbfqASKxGvvG52QA4Pg5QygA2Okquko/4cMS7LYzKNyqihkv33E66tCWkKXo7fn71XZOs26EJ+ltCoK01lWcr52v9HyTJEtAfDN3AANF/kRYR2A2/wLo0KVETuSETgAAAABJRU5ErkJggg=='
15+
16+
root= tk.Tk()
17+
top= root
18+
top.geometry("260x80")
19+
top.title("Text to Image")
20+
top.resizable(0,0)
21+
favicon=tk.PhotoImage(data=img)
22+
root.wm_iconphoto(True, favicon)
23+
24+
#create_buttons
25+
def create_buttons():
26+
global convert_button
27+
convert_button=tk.Button(top)
28+
convert_button.place(x=90,y=20,height=40,width=80)
29+
convert_button.configure(text="Convert")
30+
convert_button.bind("<Button-1>",open_file)
31+
32+
#open_file
33+
def open_file(event):
34+
global textfilename
35+
data=[('TXT', '*.txt')]
36+
textfilename=askopenfilename(filetypes=data, defaultextension=data)
37+
#if str(soundfile)!='':
38+
convert()
39+
40+
#convert_bitrate
41+
def convert():
42+
headerbytes= b'B'b'M'b'\xf2'b'\xb0'b'\x04'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\xf2'b'\x00'b'\x00'b'\x00'b'|'b'\x00'b'\x00'b'\x00'b'\x80'b'\x02'b'\x00'b'\x00'b'\xe0'b'\x01'b'\x00'b'\x00'b'\x01'b'\x00'b'\x08'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\xb0'b'\x04'b'\x00'b'\x12'b'\x17'b'\x00'b'\x00'b'\x12'b'\x17'b'\x00'b'\x00'b'\x1a'b'\x00'b'\x00'b'\x00'b'\x1a'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\xff'b'\x00'b'\x00'b'\xff'b'\x00'b'\x00'b'\xff'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'B'b'G'b'R'b's'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x02'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\x00'b'\xfd'b'\x00'b'M'b'\x00'b'\xff'b'\x00'b'\xa5'b'\x00'b'7'b'\x00'b'\xfd'b'\x00'b'k'b'\x00'b'\xff'b'\x00'b'\xff'b'\x00'b'\xe4'b'\x00'b'\xff'b'G'b'\x00'b'\x00'b'\xd7'b'\x00'b'\xff'b'\x00'b'\xa6'b'\x05'b'\xff'b'\x00'b'B'b'D'b'|'b'\x00'b'\x00'b'"'b'\xff'b'\x00'b'\xff'b'\x8e'b'\x00'b'\x00'b'\x00'b'b'b'\xff'b'\x00'b'\x00'b'\x8c'b'\xff'b'\x00'b'\xff'b'\xcc'b'\x00'b'\x00'b'^'b'\xff'b'\x00'b'\x00'b'\x00'b'\xb9'b'\xff'b'\x00'b'\x93'b'\xff'b'\x00'b'\x00'b'\n'b'\xff'b'&'b'\x00'b'\xf9'b'\xf9'b'\x00'
43+
textfile=open(textfilename,'r')
44+
tempfile=open("tempfile.bmp",'wb')
45+
tempfile.write(headerbytes)
46+
for pixels in range (1,1921600):
47+
char=textfile.read(1)
48+
if char=='':
49+
textfile.seek(0,0)
50+
else:
51+
asciicode=ord(char)
52+
if asciicode >97 and asciicode<123:
53+
code=asciicode-97
54+
pixarray=code.to_bytes(2,'big')
55+
#print (pixarray)
56+
tempfile.write(pixarray)
57+
#print (pixarray)
58+
#imgfile=Image.open("tempfile.bmp")
59+
#img=imgfile.convert("P", palette=Image.Palette.ADAPTIVE, dither=Image.Dither.FLOYDSTEINBERG, colors=256)
60+
data=[('BMP','*.bmp')]
61+
bmpfilesavename=asksaveasfilename(filetypes=data, defaultextension=data)
62+
shutil.copy("tempfile.bmp",bmpfilesavename)
63+
tempfile.close()
64+
textfile.close()
65+
os.remove("tempfile.bmp")
66+
imgfileshow=Image.open(bmpfilesavename)
67+
imgfileshow.show()
68+
69+
70+
71+
#main
72+
def main():
73+
create_main_window()
74+
create_buttons()
75+
76+
main()
77+
root.mainloop()

0 commit comments

Comments
 (0)