在上面的图片,你会发现三个目录(层): 00head,01eyes和02mouth。头部将是图形的基础层,眼睛和嘴巴将以编程方式覆盖在头部层的顶部,因此我们不必手动创建带有所有不同层的每个图像。

请记住,这是一个示例项目——没有做太多的艺术工作来让它看起来很漂亮,也没有准备许多不同的特征类型——这只是为了让你对我们可以完成的工作有一个小小的了解。

需要注意的是每一个层(除了头)具有一个透明的背景,并且在同一画布大小,因此图像可以在彼此的顶部容易且均匀地覆盖。

一旦所有不同的层和变体都完成了,我们就可以开始编写代码来构建最终图像并记录每个图像各自的特征映射。请注意,我们将每个层命名为

<layer>_<trait_shape>_<trait_color>.png

这是有意为之,因为它将有助于以编程方式为每个图形构建特征映射。如果你使用相同的代码构建自己的项目,请确保运行“composer run test”以针对图像文件名运行测试。

2、合并图层

现在我们的项目包含输出最终图形所需的层,我们需要编写一些代码将这些层组合在一起并强制将某种稀有性添加到项目中 – 例如,一些项目喜欢制作僵尸/骨架变体他们的角色是“罕见的”,这意味着只有一小部分最终图像会有这些“皮肤”。在我们的例子中,我们不会强制任何类型的稀有度,并且层将被随机挑选。

为此,我们将编写一些PHP代码并使用图像处理GD库进行图像处理。最终代码可能看起来不太漂亮(我期待使用PHP的pitchforks)但它可以按预期工作来构建图像。

我们总共有4种头部类型、4种头部颜色、3种眼睛颜色、2种眼睛类型、2种嘴巴颜色和1种嘴型,并且可以自由编写代码来描述它们的稀有性——但首先,让我们把代码放在一起合并每一层。

一旦代码将层合并到我们的规则集(它只是随机选择层进行n次迭代),代码将生成接口(例如OpenSea)所需的JSON对象以显示每个图像的特征,这些特征将从在合约级别存储在 baseURI中的端点。

怎么部署一个JPG NFT项目?

3、创建

因为我们希望允许用户铸造一些的

怎么部署一个JPG NFT项目?

部署合约时,我们必须在构造函数参数中输入可以铸造的最大供应量(我们之前输出的唯一图像的数量)。这意味着每个mint() 都会有一个图像和属性。

一旦我们使用init参数将

4、验证合约

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注