图片图形组合
库:
pip3 config set global.index-url https://repo.huaweicloud.com/repository/pypi/simple pip3 config list pip3 install --upgrade pip pip3 install Image
这里第一项是修改镜像地址,华为的我在学校下载的快一些,第二个查看是否修改成功,第三个是将pip升级到最新版本,最后一个才是咱们需要用到的Image图片库。
对应的位置上一定需要有图片,否则会读取失败。
编码如下:
from PIL import Image import os map = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], ] count = 0 for item in map: for item1 in item: if item1 == 0: count += 1 print("需要图片:", count, "张") # 图片路径-自定义就行 img_dir = r"D:/images/" # 获取img_dir下的所有文件,都是一个类型的图片 imgs = os.listdir(img_dir) # 设置所有的图片的尺寸,别太大 img_h = 192 img_w = 192 # 获取行数 rows = len(map) # 获取列数 columns = len(map[0]) # 设定图片 figure = Image.new("RGB", (img_w * columns, img_h * rows), "white") # 初始图片下标 count = 0 # 开始放置图片 for i in range(len(map)): for j in range(len(map[i])): # 如果元素是不是1,就放图片 if map[i][j] != 1: # 异常处理,防止有些图片无法读取 try: # 使用Image.open("图片路径")方法获取图片对象 image = Image.open(os.path.join(img_dir, imgs[count])) except: continue # resize((自定义宽,自定义高))用来改变图片的尺寸 image = image.resize((img_w, img_h)) # 将修改尺寸后的图片(image)粘贴(paste)到画布(figure)上 # 第一个参数 是图片对象 # 第二个参数是 图片在画布上的位置,相当于单元格的位置 figure.paste(image, (img_w * j, img_h * i)) # 贴完一张贴下一章 count += 1 # 显示图片 figure.show() # 保存路径,默认是项目执行位置 figure.save('MyHeartWillGoOn.png')
效果如下图:
其中的map是可以随意修改的,我根据1与0之间的变换拼成的图片。
更换成I LOVE YOU
map = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1], [1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1], [1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1], [1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1], [1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] ]
如果有兴趣,也可以打印个特殊的:
3d❤库
pip3 install matplotlib pip3 install numpy
3d❤参考源码:
import matplotlib.pyplot as plt import numpy as np xZhou, yZhou, zZhou = np.linspace(-10, 10, 520), np.linspace(-10, 10, 520), np.linspace(-10, 10, 520) X, Y, Z = [], [], [] for x in xZhou: for y in yZhou: for z in zZhou: if (x ** 2 + (9 / 4) * y ** 2 + z ** 2 - 1) ** 3 - (9 / 80) * y ** 2 * z ** 3 - x ** 2 * z ** 3 <= 0: X.append(x) Y.append(y) Z.append(z) plt.title("I LOVE YOU") fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(X, Y, Z, s=20, alpha=0.5, color="pink") plt.show()
3d❤实际效果:
可以自己更换颜色啊,毕竟是情人节,爱情是红色的,那么情人。。。。粉色的也不错。
我电脑性能一般,等了大概2分钟。
情人节了,希望能对你的情人有点价值。
送你一首【离骚】
长太息以掩涕兮,哀民生之多艰。余虽好修姱以鞿羁兮,謇朝谇而夕替。既替余以蕙纕兮,又申之以揽茝。亦余心之所善兮,虽九死其犹未悔。怨灵修之浩荡兮,终不察夫民心。众女嫉余之蛾眉兮,谣诼谓余以善淫。
祝你能找到你的真心道侣。
道也者不可须臾离也可离非道。