from PIL import Image import requests from io import BytesIO import json # 从铭刻中读取JSON数据 inscription_content = '''{ "project_name": "cececat", "components": { "background": [ "bafybeib3wpn4lfx4iiccdobg3biiadgek2c7juf4utp4cebyelaclpx4sy", "bafybeiedpzqeblg4pump2mpoj5upiliflou427wx5z352vmall3y7vitoe", "bafybeiembiswzsbp6csjnlgntnfbk3qblkfoj7l74qxkibc5szt2zu" ], "base": [ "bafybeicqsxuipe6wpuynbig6tcznjcm7qwkzrjiq4kam4plmztpctkplfu", "bafybeicwj4lciguwb3h2ymht5wjomu7o76agjkv5bkvzufndqewyg66dga", "bafybeiatg2rytojys5lrygapawjafre22wqswi7wf74otam55ggq2rgrxe" ], "car": [ "bafybeiffnq24kd77x3qobp47xjfyrwmm3tkwnjiktqk2m73yy2v2ma4nc4", "bafybeig5bhyxdwwo6ivbeoqfsvh5tstb5erlllgdo3fwudpz37djohkqjm", "bafybeigjglvvbplnlwunbgui3cwy6lwthovkt7ukatn6sg2ug5dphyrkvy" ] }, "minted_count": 0, "max_count": 20 }''' data = json.loads(inscription_content) components = data["components"] minted_count = data["minted_count"] max_count = data["max_count"] def get_image_from_ipfs(ipfs_hash): url = f"https://{ipfs_hash}.ipfs.dweb.link" response = requests.get(url) return Image.open(BytesIO(response.content)) def generate_nft(components, idx): background = get_image_from_ipfs(components['background'][idx % 3]) base = get_image_from_ipfs(components['base'][idx % 3]) car = get_image_from_ipfs(components['car'][idx % 3]) # Combine parts background.paste(base, (0, 0), base) background.paste(car, (0, 0), car) return background if minted_count < max_count: for i in range(minted_count, max_count): nft_image = generate_nft(components, i) nft_image.save(f"generated_nft_{i}.png") minted_count += 1 # 更新铭刻数据 data["minted_count"] = minted_count # 你需要把更新后的data重新铭刻到区块链上 # 更新后的JSON数据 updated_inscription_content = json.dumps(data) # 在这里添加代码,将 updated_inscription_content 铭刻到区块链上 else: print("已经达到最大数量20,无法再生成更多NFT。")