Python-NFT作品自动生成

场景

需要内嵌到平台后台中,点击“一键生成”按钮,填写模板表单后,根据模板(风格、数量、类型、是否自动上架等等)自动化生成作品。

程序源码地址

Github: NFT自动化生成作品.

预览

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

部分代码

app.py

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
"""=================================================
@Desc   :主接口
=================================================="""
import os
import random
import time

from colors import ColorMultiImage
import settings
from model import training
import csv
from pymongo import MongoClient
import datetime
import sys


nftSeriesId = settings.chooesId


def login(temp):
    nftSeries = []
    for i in temp:
        nftSeries.append(list(i.values())[0])
    print('>>> 【NFT自动生成程序】启动成功')
    print('>>>  启动成功')
    print(f'>>> 训练集存放路径: {settings.color_data_path}')
    print(f'>>> 默认生成数量: {settings.food_num}')
    print(f'>>> 默认作品风格: {settings.color_style} (0为随机风格,1为艺术家风格)')
    print(f'>>> 默认生成算法: Means算法分成K类')
    print(f'>>> 默认艺术家风格分箱颜色数: {settings.random_state} (数量越多色彩越鲜艳)')
    print(f'>>> 默认艺术家风格颜色差异距离检查数: {settings.color_distance} (作品色彩差异度)')
    print(f'>>> 默认训练模型生成路径: {settings.color_model_path} (使用自动训练后生成模型参数的存放路径)')
    print(f'>>> 默认生成模式: {settings.train} 0:自动训练模型 1:使用已有训练集')
    print('\n目前已生成NFT系列:')
    for i in range(len(nftSeries)):
        print(f'{i + 1}. {nftSeries[i]}')
    # exit()
    return choose(len(nftSeries))


def choose(maxNum):
    global nftSeriesId
    nums = [i + 1 for i in range(maxNum)]
    while True:
        nftSeriesId = int(input("请选择要生成的系列作品ID(输入0则生成全部系列作品):"))
        num = input("请输入生成数量(无输入将默认生成10个):")
        models = input("请输入生成模式(0:训练模式 1:生成模式 无输入将使用自动训练模型):")
        if num != '':
            settings.food_num = int(num)
        if models != '':
            if models == 1:
                settings.train = True
            elif models == 0:
                settings.train = False
            else:
                print('无此模式,将采用默认模型')
        if nftSeriesId != 0:
            if nftSeriesId not in nums:
                print(f'您输入的系列不存在,请输入0-{maxNum}之间的数字')
            else:
                return False
        if nftSeriesId == 0:
            return True
    return True


def nftCore(cout):
    global stickers
    print('>>>当前用户要生成的作品数量为:' + str(settings.food_num))
    print('>>>' + '开始生成..')
    for amount in range(0, settings.food_num):  # 设置生成数量

        pixel = generate_color.merges(stickers[:2])

        colors_number = generate_color.colors_number
        generate_color.generate(pixel, settings.color_output_name, str(cout), settings.color_model_path,
                                settings.color_style, colors_number)
        print(f"{str(cout)}.正在生成第{str(amount + 1)}个作品")
        cout += 1
    print()
    return cout


def nftCore2(cout):
    print('>>>当前用户要生成的作品数量为:' + str(settings.food_num))
    print('>>>' + '开始生成..')
    t = []
    for amount in range(0, settings.food_num):  # 设置生成数量
        t.append(stickers[0])
        t.append(stickers[settings.chooesId])
        pixel = generate_color.merges(t)

        colors_number = generate_color.colors_number
        generate_color.generate(pixel, settings.color_output_name, str(amount), settings.color_model_path,
                                settings.color_style, colors_number)
        print(f"{str(cout)}.正在生成第{str(amount + 1)}个作品")
        cout += 1
    print()
    return cout


def nftCore3():
    for amount in range(0, settings.food_num):  # 设置生成数量
        pixel = generate_color.merges(stickers)
        colors_number = generate_color.color_number
        generate_color.generate(pixel, settings.color_output_name, str(amount), settings.color_model_path,
                                settings.color_style, colors_number)
        print(f"INFO:生成第{str(amount)}个{settings.color_output_name}")


def toMongo():
    print('>>>开始连接MongoDB数据库...')
    # host = '103.139.1.219'
    host =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

影修

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值