本篇博客纯属娱乐,利用代码画画!
首先,先画一个宽高都为21的彩色图。
import numpy as np
from PIL import Image
#创建15*15大小的全零数组
img_arr = np.zeros((15,15,3))
#全部填充粉色
for i in range(15):
for j in range(15):
img_arr[i][j] = np.array([246,190,200])
#一个个填充白色
for j in range(15):
img_arr[3][j] = np.array([255,255,255])
img_arr[14][j] = np.array([255,255,255])
for i in range(4,14):
img_arr[i][0] = np.array([255,255,255])
img_arr[i][14] = np.array([255,255,255])
img_arr[0][3] = np.array([255,255,255])
img_arr[0][11] = np.array([255,255,255])
img_arr[1][4] = np.array([255,255,255])
img_arr[1][10] = np.array([255,255,255])
img_arr[2][5] = np.array([255,255,255])
img_arr[2][9] = np.array([255,255,255])
img_arr[5][4] = np.array([255,255,255])
img_arr[5][5] = np.array([255,255,255])
img_arr[5][9] = np.array([255,255,255])
img_arr[5][10] = np.array([255,255,255])
img_arr[6][3] = np.array([255,255,255])
img_arr[6][4] = np.array([255,255,255])
img_arr[6][10] = np.array([255,255,255])
img_arr[6][11] = np.array([255,255,255])
img_arr[7][2] = np.array([255,255,255])
img_arr[7][3] = np.array([255,255,255])
img_arr[7][11] = np.array([255,255,255])
img_arr[7][12] = np.array([255,255,255])
img_arr[10][5] = np.array([255,255,255])
img_arr[10][7] = np.array([255,255,255])
img_arr[10][9] = np.array([255,255,255])
img_arr[11][6] = np.array([255,255,255])
img_arr[11][8] = np.array([255,255,255])
#外面再加三圈粉色(加圈之后的大小为21*21*3)
raw_rows, raw_cols,channels = img_arr.shape
new_rows, new_cols,channels = raw_rows + 3 * 2, raw_cols + 3 * 2, 3
padding_img = np.zeros((new_rows, new_cols, 3))
for i in range(new_rows):
for j in range(new_cols):
padding_img[i][j] = np.array([246,190,200])
for i in range(raw_rows):
for j in range(raw_cols):
padding_img[i+3, j+3] = img_arr[i,j]
padding_img = padding_img.astype(np.uint8)
# 将numpy数组转换为PIL图像
img = Image.fromarray(padding_img)
# 如果需要,可以保存图像(原图)
img.save('bilibili.jpg')
由于21×21×3的图片看起来是很小的,因此接下来对这张图进行放大100倍的操作,也就变成了2100×2100×3的大小。
#等比例放大图片
img_array = np.zeros((2100,2100,3))
rows,cols,channels = img_array.shape #row指的是行数,也就是图像的高;col指的是列数,也就是图像的宽
print(rows,cols)
# print(img_array[0][0])
for i in range(rows):
for j in range(cols):
img_array[i][j] = padding_img[int(i/800*8)][int(j/800*8)]
# print(img_array)
# 图像的数据类型应为np.uint8,其值的范围为0-255。
img_array = img_array.astype(np.uint8)
# 将numpy数组转换为PIL图像
img = Image.fromarray(img_array)
# 显示图像
img.show()
# 如果需要,可以保存图像
img.save("new_bilibili.png")
好了,图画好。如果大家觉得有意思也可以自行尝试一下。当然像素画宽高数值太大的话,我建议先画一个小图,再把原图放大即可。颜色的话,可自行在网上搜索RGB数值。