01图
2012年11月03日 19:12
事情很多,就是不想干。之前看到贴吧上一些帖子用字符做画,感觉挺好玩的。于是试着用python写一个用0和1以及作画的程序。先上几个作品吧!
01 01 1111111111111 11111 1111111 11111 0 111111 111111111 11111 1 1 1111111111111111111111111 1 0 11111111111111111111111111111110 1111 111111111 1 111111111111111111 1 1 111111 1111111111111111111 011111111111111111111111111 1111111 111111111111111111111111111 111111 111111111111111111111111111111111 111111111111 11111111111111 111 11111111111111 11111111111 1 111 111111 1111110 111111111 1111 11111 1 11 1 11111111111 11111111111 1111 1111111111 1 0 1111111111111 1 11111111111 1 1 11 1111111111 1111111111111 11 111111 11111111111 0 1 1 1 1111111111 01 0 0 0 1 11111111 01 01 1 0 11111 1 11 1 1 0 1 111111 1111111 1 0 1 1 1 1 1 11111111 1 1 11 0 01111 1 11100 111 1111 1 1 10111 111 1 00101 1 1 1 1 1 1 1 1 1 1 1 1 1 011 1 1110 11 1 1 1 1 1 0 1 11 11 011 1111 1111111101
源图片:
1111 1111 00000000000001 11 11100000000000001 1000000000000001 10000000000000 0000000000000 1000000000000 10000000001 10000000001 100000000 100000001 000000 100000 001 000 1 0 00000000000000000000001 0000000000000000000000 100000001 1000000001 0000000001 1100000001 0000001 100000000 100000001 0000001 000000 11110 0000001 0000001 011011 100000 100000 111 001 0000001 0000001 1001 111 100001 00000011 100000000 1000000011 1000000 1000000 0000000000001 10000000000001 1000000 100000000 1000000000001 1000000000001 000000001 10000000001 100000000001 00000000001 1000000000 000000000000000000001 110000000000000000000 000000000000000001 10000000000000000 10000000000001 1000000000000 11 100000 100001 1 1 0 11 1 0 1 11 11 1 11 1 0 0 11 1 1 10 10 1 11 1 111 11 1111 111 1000011111111111111111100000
源图片:
原理很简单,也没有什么技术含量,就是那个图片变换一下,定两个0和1的阀值,然后就ok了。
#!/usr/bin/python # coding=utf-8 from Tkinter import * from FileDialog import * import Image file_name = 'a.jpg' def getFileName(): file_dialog = LoadFileDialog(frame) global file_name file_name = file_dialog.go() try: img = Image.open(file_name) except: print 'openfile error' show_img.image = img show_img.pack() def gen(): try: img_o = Image.open(file_name) except: print 'openfile error' img_L = img_o.convert('L') size_x, size_y = img_o.size size_y = size_y * 80 / size_x / 2 size_x = 80 #img_L.resize((size_x, size_y)).show() data = list(img_L.resize((size_x, size_y)).getdata()) min_x, min_y = size_x, size_y max_x, max_y = 0, 0 for i in range(0, size_y): for j in range(0, size_x): index = i * size_x + j if data[index] <= 170: min_x, min_y = min(min_x, j), min(min_y, i) max_x, max_y = max(max_x, j), max(max_y, i) genText.delete('1.0', 'end') for i in range(min_y, max_y + 1): for j in range(min_x, max_x + 1): index = i * size_x + j if data[index] > 170: to = ' ' elif data[index] > 85: to = '1' else: to = '0' genText.insert('end', to) #print genText.insert('end', '\n') if __name__ == "__main__": mainWindow = Tk() mainWindow.title() #mainWindow.geometry('640x480+0+0') frame = Frame(mainWindow) frame.pack() fileBotton = Button(frame, text =u"打开文件", command = getFileName) fileBotton.pack(side = LEFT) genBotton = Button(frame, text = u"生成", command = gen) genBotton.pack(side = LEFT) genText = Text(frame, height = 40) genText.pack(fill = BOTH, padx = 10, pady = 10) show_img = Label(frame) show_img.pack() mainWindow.mainloop()