IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 使用 Python 创建您自己的NFT集合(一)自己动手制作中秋月饼上链送给亲朋好友 -> 正文阅读

[Python知识库]使用 Python 创建您自己的NFT集合(一)自己动手制作中秋月饼上链送给亲朋好友

使用 Python 创建您自己的NFT集合(一)

该系列主要分为4部分:
第一部分: 如何使用 Python 拼接创建月饼图像集。
第二部分:了解如何生成收藏的元数据。
第三部分:了解生成的收藏如何存储。
第四部分:了解链上合约,NFT上链。

本文主要讲解第一、二部分,我们学习python如何批量拼接生成图片。

一、批量制作NFT方案选择

按照目前最火的头像来说,一般分为算法生成和拼接图片两种。

除去部分通过手绘的头像,很多NFT头像其实都是通过算法和脚本的方式来将各种元素组合生成不同的头像。

算法生成相对于普通人来说比较难,拼接图像无疑是一种更好的选择。譬如你设计了3张脸、3个发型和3个道具,就能通过脚本拼接的形式自动生成3x3x3即27张图片,倘若你继续往里面添加不同的元素,就可以得到更多的头像,并且每一张都是不一样的。

拼接图像的本质就是 通过将不同的特征组合在一起来创建独特的图像。

二、 拼接图像实现思路

首先,需要准备组合图像的元素,可以根据自己的设定来决定元素的多少。然后将各类元素保存在不同的文件夹里面,利用算法或脚本(例如Python等)来进行随机拼接,就能快速生成n张相似但不同的数字图像。最后将这些数字图像上链制作成NFT作品。

定义图像特征,将各类元素保存在不同的文件夹里面,编写了一个 for循环,将这些特征组合成一张图片。

三、如何使用 Python 拼接创建中秋月饼NFT图像集

月饼设计

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  1. 把这些图片搞一样大小,350*350
  2. 把月饼背景扣出来,4种颜色的月饼。做为底图背景。
  3. 把月饼口味扣出来,4种口味,透明背景,大小位置固定,直接去叠层合成
  4. 把脸扣出来,4种脸型,透明背景,大小位置固定,直接去叠层合成

代码会组合这些元素,生成唯一的月饼图像。

代码实现以及设计(生成图片对应json元数据结构)

实现代码,参考: https://github.com/gelerum/nft-collection-generator

代码主要实现2部分功能:

  • 生成最终组合后的图片
  • 生成图片对应json元数据结构

首先, 在编写代码前,我们需要准备2个东西,一个是图片素材,一个是根据图片素材修改layers.json文件。

  1. 代码从layers.json文件获取,要加载要组合素材信息。
    通过层的weight来影响稀有性。
  2. 根据layers.json,生成 image 字典。 一个iamge字典,就其实唯一的描述了这张图片。
    例如:
    {‘background’: ‘orange’, ‘body’: ‘dark’, ‘eye’: ‘big blue’, ‘horn’: ‘standing’}
    从layers.json选择随机元素,并将其添加到image字典中
  3. 定义images列表,非重复image字典加入到images列表中,直到指定集合个数。
  4. 保存集合图像和元数据
    将图像的各层组合为一幅图像,并保存最终图像。
    代码根据 image字典,关联layers.json到具体文件,遍历进行合成图像。
    文件名,即我们生产的图像编号。

核心代码:

    # save collection images and metadata
    image_id = 0
    for image in images:
        save_image(data, image, image_id)
        save_metadata(image, image_id)
        image_id += 1
def save_image(data: dict, image: dict, image_id: int):
    """
    Сombines layers of the image to one image and saves the final image
    """
    paths = []
    for layer in image:
        for item in data[layer]:
            if item["name"] == image[layer]:
                path = PATH_TO_LAYERS + "/{}/{}".format(layer, item["fileName"])
                paths.append(path)
                break
    image_file = Image.open(paths[0]).convert("RGBA")
    for path in paths[1:]:
        image_file = Image.alpha_composite(image_file, Image.open(path).convert("RGBA"))
    image_file.save(PATH_TO_IMAGES + "/{}.png".format(image_id))
  • save_image:将图像的各层组合为一幅图像,并保存最终图像
  • save_metadata :将图像的各层组合为一个json元数据,并保存最终文件

四、Python图像库PIL

Python图像库PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了。其官方主页为:PIL。 PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow,pillow号称是friendly fork for PIL,其功能和PIL差不多,但是支持python3。

python合成一张背景透明的图像和一张背景不透明的图

Image.alpha_composite( )——实现一张背景透明图像和一张背景不透明图像的合成

使用这个函数,注意,2个参数的图片大小要一样大,不一样大的话,使用resisze提前调整一样大。

import PIL.Image as Image
 
layer1 = Image.open("image.jpg").convert('RGBA')   # 底图背景
layer2 = Image.open("mask.png").convert('RGBA')    # mask
 
 
final = Image.new("RGBA", layer1.size)             # 合成的image
final = Image.alpha_composite(final, layer1)
final = Image.alpha_composite(final, layer2)
 
final=final.convert('RGB')
final.save('image_mask.jpg')

参考

用自定义素材组合生成艺术NFT
https://learnblockchain.cn/article/4549
如何用用Python制作NFT区块链作品
参考URL: https://www.jb51.net/article/215008.htm
英国12岁男孩用 Python 写了一个NFT表情包,赚了250万
参考URL: https://www.163.com/dy/article/H9GO4IB105535UFD.html

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:07:23  更:2022-09-04 01:08:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:56:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码