# 做出自己的簡易nft
###### tags: `自己玩`
## 眼睛
```python=
#將圖片變成我要的大小 但圖片不便大小 底色為黑色
import cv2
import os
import numpy as np
os.chdir('C:/Users/bt/eyee/')
def img_resize_to_target_black(image):
target = np.zeros((600,600),dtype=np.uint8)
bgr_img = cv2.cvtColor(target, cv2.COLOR_GRAY2BGR)
h = image.shape[0]
w = image.shape[1]
for i in range(600):
for j in range(600):
if(i >= h) and (j >= w):
bgr_img[i, j, 0] = 204
bgr_img[i, j, 1] = 224
bgr_img[i, j, 2] = 255
if (i >= h) and (j < w):
bgr_img[i, j, 0] = 204
bgr_img[i, j, 1] = 224
bgr_img[i, j, 2] = 255
if(i < h) and (j < w) :
bgr_img[i, j, 0] = image[i, j, 0]
bgr_img[i, j, 1] = image[i, j, 1]
bgr_img[i, j, 2] = image[i, j, 2]
bgr_img[i, j+290, 0] = image[i, -j, 0]
bgr_img[i, j+290, 1] = image[i, -j, 1]
bgr_img[i, j+290, 2] = image[i, -j, 2]
return bgr_img
p = 'C:/Users/bt/eye/'
p = os.listdir(p)
for i in p:
if __name__ == '__main__':
image = cv2.imread('C:/Users/bt/eye/'+i)
image = cv2.flip(image,1)
img_new_black = img_resize_to_target_black(image)
cv2.imwrite(str(i), img_new_black)
```
在eye資料夾

在eyee資料夾

## 嘴巴
```python=
#將圖片變成我要的大小 但圖片不便大小 底色為黑色
import cv2
import os
import numpy as np
os.chdir('C:/Users/bt/mouthe/')
def img_resize_to_target_black(image):
target = np.zeros((600,600),dtype=np.uint8)
bgr_img = cv2.cvtColor(target, cv2.COLOR_GRAY2BGR)
h = image.shape[0]
w = image.shape[1]
for i in range(600):
for j in range(600):
if (i not in range(400,600)):
bgr_img[i, j, 0] = 204
bgr_img[i, j, 1] = 224
bgr_img[i, j, 2] = 255
if i in range(400,600) and j in range(170):
bgr_img[i, j, 0] = 204
bgr_img[i, j, 1] = 224
bgr_img[i, j, 2] = 255
if i in range(400,600) and j in range(440,600):
bgr_img[i, j, 0] = 204
bgr_img[i, j, 1] = 224
bgr_img[i, j, 2] = 255
if (i in range(580,600)):
bgr_img[i, j, 0] = 204
bgr_img[i, j, 1] = 224
bgr_img[i, j, 2] = 255
if(i < h) and (j < w) :
bgr_img[i+400, j+170, 0] = image[i, j, 0]
bgr_img[i+400, j+170, 1] = image[i, j, 1]
bgr_img[i+400, j+170, 2] = image[i, j, 2]
return bgr_img
p = 'C:/Users/bt/mouth/'
p = os.listdir(p)
for i in p:
if __name__ == '__main__':
image = cv2.imread('C:/Users/bt/mouth/'+i)
image = cv2.flip(image,1)
img_new_black = img_resize_to_target_black(image)
cv2.imwrite(str(i), img_new_black)
```


## 鼻子
```python=
import cv2
import os
import numpy as np
os.chdir('C:/Users/bt/nosee/')
def img_resize_to_target_black(image):
target = np.zeros((600,600),dtype=np.uint8)
bgr_img = cv2.cvtColor(target, cv2.COLOR_GRAY2BGR)
h = image.shape[0]
w = image.shape[1]
for i in range(600):
for j in range(600):
if ((i not in range(220,380))and j not in range(220,380)):
bgr_img[i, j, 0] = 204
bgr_img[i, j, 1] = 224
bgr_img[i, j, 2] = 255
if ((i in range(220,600))and j not in range(220,380)):
bgr_img[i, j, 0] = 204
bgr_img[i, j, 1] = 224
bgr_img[i, j, 2] = 255
if ((i not in range(220,380))and j in range(220,600)):
bgr_img[i, j, 0] = 204
bgr_img[i, j, 1] = 224
bgr_img[i, j, 2] = 255
if(i < h) and (j < w) :
bgr_img[i+200, j+170, 0] = image[i, j, 0]
bgr_img[i+200, j+170, 1] = image[i, j, 1]
bgr_img[i+200, j+170, 2] = image[i, j, 2]
return bgr_img
p = 'C:/Users/bt/nose/'
p = os.listdir(p)
for i in p:
if __name__ == '__main__':
image = cv2.imread('C:/Users/bt/nose/'+i)
image = cv2.flip(image,1)
img_new_black = img_resize_to_target_black(image)
cv2.imwrite(str(i), img_new_black)
```


## 合成各種不同照片
```python=
import random
from PIL import Image
import cv2
import os
#讀取資料以及設置權重
os.chdir('C:/Users/bt/hahahaha')
p = 'C:/Users/bt/nosee'
nosee = os.listdir(p)
nosee_weight = []
for i in range(len(nosee)):
nosee_weight.append(100/len(nosee))
p = 'C:/Users/bt/eyee'
eyee = os.listdir(p)
eyee_weight = []
for i in range(len(eyee)):
eyee_weight.append(100/len(eyee))
p = 'C:/Users/bt/mouthe'
mouthe = os.listdir(p)
mouthe_weight = []
for i in range(len(mouthe)):
mouthe_weight.append(100/len(mouthe))
TOTAL_IMAGES = 10#要做幾次
all_images = []
#隨機抽取個個圖片並駔成一組
def create():
new_image = {}
new_image ["nosee"] = random.choices(nosee, nosee_weight)[0]
new_image ["eyee"] = random.choices(eyee, eyee_weight)[0]
new_image ["mouthe"] = random.choices(mouthe, mouthe_weight)[0]
if new_image in all_images:
return create()
else:
return new_image
for i in range(TOTAL_IMAGES):
new_trait_image = create()
all_images.append(new_trait_image)
for i in range(TOTAL_IMAGES):
new_trait_image = create()
all_images.append(new_trait_image)
判斷是否都不一樣
def all_images_unique(all_images):
seen = list()
return not any(i in seen or seen.append(i) for i in all_images)
print("Are all images unique?", all_images_unique(all_images))
#每組加編號
i = 0
for item in all_images:
item["tokenId"] = i
i = i + 1
print(all_images)
nosee_count = {}
for item in nosee:
nosee_count[item] = 0
eyee_count = {}
for item in eyee:
eyee_count[item] = 0
mouthe_count = {}
for item in mouthe:
mouthe_count[item] = 0
for image in all_images:
nosee_count[image["nosee"]] += 1
eyee_count[image["eyee"]] += 1
mouthe_count[image["mouthe"]] += 1
print(nosee_count)
print(eyee_count)
print(mouthe_count)
i = 0
for item in all_images:
item["tokenId"] = i
i = i + 1
for i in all_images:
im1 = Image.open(f'C:/Users/bt/nosee/'+i['nosee']).convert('RGBA')
im2 = Image.open(f'C:/Users/bt/eyee/'+i['eyee']).convert('RGBA')
im3 = Image.open(f'C:/Users/bt/mouthe/'+i['mouthe']).convert('RGBA')
im1 = im1.resize((150, 150), Image.ANTIALIAS)
im2 = im2.resize((150,150), Image.ANTIALIAS)
im3 = im3.resize((150,150), Image.ANTIALIAS)
#將除了圖片其他地方變透明
x, y = im2.size
for p in range(x):
for k in range(y):
color = im2.getpixel((p, k))
color = color[:-1] + (100, )
im2.putpixel((p, k), color)
x, y = im3.size
for p in range(x):
for k in range(y):
color = im3.getpixel((p, k))
color = color[:-1] + (100, )
im3.putpixel((p, k), color)
#合成
com1 = Image.alpha_composite(im1, im2)
com2 = Image.alpha_composite(com1,im3)
rgb_im = com2.convert('RGB')
file_name = str(i["tokenId"]) + ".png"
rgb_im.save(file_name)
```

## 自製加密方法
want 、arc為圖的編號 , c為密鑰需要緊記
```python=
import random
want = input("請輸入你要的圖號碼:")
a = ['d1s','qeg','25e','k6g','w4g','efr']
b = ['wd','fk4o','sd3ko','s9ko']
c = []
num = ['1','2','3','4','5','6','7','8','9','0']
for i in a:
c.append(random.choice(a))
c.append(all_images['tokenId'][want])
for i in b:
c.append(random.choice(b))
c = list(map(str,c))
ans = ''
c =''.join(c)
ok = 1
l = 1
while ok == 1:
if c[17+l] in num:
l += 1
if c[17+l] not in num:
anc = c[18:17+l]
ok = 0
```
## 製作平台
做出2個輸入格,1個為製造出密匙,1個為輸入密鑰匙並顯示圖案
```python=
from tkinter import *
from PIL import Image ,ImageTk
import tkinter.messagebox
import random
root = Tk()#建立一個視窗實體
root.title('ha')#視窗名子
root.geometry('500x150')#視窗大小
text = Text(root, font = ('ariel',10))#字體大小
def produce_key_number():
global result
result = current_input.get()
a = ['d1s','qeg','25e','k6g','w4g','efr']
b = ['wd','fk4o','sd3ko','s9ko']
c = []
num = ['1','2','3','4','5','6','7','8','9','0']
for i in a:
c.append(random.choice(a))
c.append(str(result))
for i in b:
c.append(random.choice(b))
c = list(map(str,c))
c =''.join(c)
msg = "your key number is : {}.(please remember it)".format(str(c))
tkinter.messagebox.showinfo(title = 'key number', # 視窗標題
message = msg,default = 'ok')
def search():
top = Toplevel()
c = str(current2_input.get())
num = ['1','2','3','4','5','6','7','8','9','0']
ok = 1
l = 1
while ok == 1:
if c[17+l] in num:
l += 1
if c[17+l] not in num:
anc = c[18:17+l]
ok = 0
img= ImageTk.PhotoImage(Image.open('C:/Users/bt/hahahaha/'+anc+'.png'))
label_right= Label(top,height=460,width=480,bg ='gray94',fg='blue',image = img)
label_right.pack(side = TOP, expand = True, fill = BOTH)
root.mainloop()
label = Label(root,text = "Enter the picture's number you want:",wraplength = 250) # 顯示文字
label.pack()
current_input = Entry(root, width = 30)#搜尋欄
current_input.pack(pady=10)#pack為位置 空的代表預設
button = Button(root,text = 'enter',command = produce_key_number)
button.pack()
label1 = Label(root,text = "Enter the key_number you have:",wraplength = 250) # 顯示文字
label1.pack()
current2_input = Entry(root, width = 30)#搜尋欄
current2_input.pack()#pack為位置 空的代表預設
button2 = Button(root,text = "see your's picture",command = search)
button2.pack()
text.pack()
root.mainloop()
```
生成密鑰

查看得到的圖
