6034| 1
|
[教程] 【Mind+Python】代码中的元宇宙 |
【项目起源】元宇宙(Metaverse)是利用科技手段进行链接与创造的,与现实世界映射与交互的虚拟世界,具备新型社会体系的数字生活空间。目前最火的莫过于VR眼镜,其实在1999年有部大片《黑客帝国》,已经提前预测了元宇宙,甚至在技术上超越了当下流行借助VR眼镜的元宇宙技术,或许元宇宙的终点会是宋代禅宗大师青原行思提出参禅的《三重境界》,参禅之初,看山是山,看水是水;禅有悟时,看山不是山,看水不是水;禅中彻悟,看山仍然山,看水仍然是水。黑客帝国中的反派程序员已经参悟出元宇宙的三重境界,看代码是代码,看代码是虚拟世界,看代码还是代码。 【项目思路】 1.文字-》16进制-》像素 2.像素-》16进制-》文字 【知识储备】 1.像素如何保存汉字: bmp图片为例,8位bmp图片即一个像素一个字节,一个字节是8个二进制位。汉字存储“一个汉字需要两个字节,16位二进制;可以用24位bmp图片,一个像素是三个字节存放的R,G,B 每个通道刚好是一个字节。 2.汉字如何转换为二进制: ord() 函数是 chr() 函数的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值。 chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。 3.技术验证 用换图制作红色背景的bmp格式图片 notepad安装插件,打开bmp图片,查看16进制的码值 photoshop的提取一个色素,借助计算器验证 python函数验证ord chr函数 【程序实现】 测试文本 1.文本txt转换为图片bmp 转换后的图片 参考代码 from PIL import Image import math with open("雪崩.txt",encoding="utf-8")as f: text=f.read() str_len= len(text) print('str_len',str_len) width=math.ceil(str_len**0.5) print('width',width) im=Image. new("RGB",(width, width), 0x0) x,y=0,0 for i in text: index= ord(i) rgb=((index & 0xFF00)>> 8, index & 0xFF,255) im.putpixel((x, y),rgb) if x== width - 1: x=0 y +=1 else: x+=1 im.save("图片.bmp") print("文字转换图片结束!") 2.图片bmp转换为文本bmp 参考代码 from PIL import Image im = Image.open("图片.bmp","r") width,height = im.size lst = '' for y in range(height): for x in range(width): red,green,blue = im.getpixel((x,y)) if(blue | green | red) == 0: break index = (red<<8) + green lst=lst+(chr(index)) #print(lst) with open ("雪崩2.txt","w",encoding = "utf-8") as f: f.write(lst) print("图片转换文字结束!") 准换后的文本 【测试文本和代码源程序】 字符画.rar |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed