【Mind+Python】代码中的元宇宙
【项目起源】元宇宙(Metaverse)是利用科技手段进行链接与创造的,与现实世界映射与交互的虚拟世界,具备新型社会体系的数字生活空间。目前最火的莫过于VR眼镜,其实在1999年有部大片《黑客帝国》,已经提前预测了元宇宙,甚至在技术上超越了当下流行借助VR眼镜的元宇宙技术,或许元宇宙的终点会是宋代禅宗大师青原行思提出参禅的《三重境界》,参禅之初,看山是山,看水是水;禅有悟时,看山不是山,看水不是水;禅中彻悟,看山仍然山,看水仍然是水。黑客帝国中的反派程序员已经参悟出元宇宙的三重境界,看代码是代码,看代码是虚拟世界,看代码还是代码。https://www.bilibili.com/video/BV1dY411H7n2/
https://www.bilibili.com/video/BV1Ym4y197jd/
【项目思路】
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("图片转换文字结束!")
准换后的文本
【测试文本和代码源程序】
6666666666
页:
[1]