nft-art-engine
Advanced tools
Comparing version 0.1.14 to 0.1.15
@@ -55,3 +55,3 @@ export interface dimention { | ||
export interface config { | ||
export interface generateConfig { | ||
dimention: dimention; | ||
@@ -66,22 +66,29 @@ edition: edition; | ||
export interface compressConfig { | ||
dimention: dimention; | ||
images: string[]; | ||
} | ||
export interface extendConfig { | ||
dimention: dimention; | ||
layers: layer[]; | ||
sign?: sign; | ||
} | ||
export declare function preview( | ||
config: config, | ||
): Promise<void>; | ||
config: generateConfig, | ||
): Promise<Buffer>; | ||
export declare function generate( | ||
config: config, | ||
outputDir: string, | ||
sessionDir: string, | ||
progressCallback: (num: number) => void | ||
): Promise<void>; | ||
config: generateConfig, | ||
callback: (progress: number, filename: string, image: Buffer) => void | ||
): Promise<string[]>; | ||
export declare function extend( | ||
config: config, | ||
): Promise<void>; | ||
config: extendConfig, | ||
): Promise<Buffer>; | ||
export declare function compress( | ||
filenames: string[], | ||
dimention: dimention, | ||
outputDir: string, | ||
progressCallback: (num: number) => void | ||
config: compressConfig, | ||
callback: (progress: number, filename: string, image: Buffer) => void | ||
): Promise<void>; |
75
index.js
@@ -6,28 +6,2 @@ const fs = require("fs"); | ||
function createDirectory(_outputDir, _sessionDir) { | ||
if (!fs.existsSync(_outputDir)) { | ||
fs.mkdirSync(_outputDir); | ||
} | ||
if (!fs.existsSync(`${_outputDir}/${_sessionDir}`)) { | ||
fs.mkdirSync(`${_outputDir}/${_sessionDir}`); | ||
} | ||
} | ||
function saveImageCollection(_canvas, _editionFrom, _outputDir, _sessionDir) { | ||
createDirectory(_outputDir, _sessionDir); | ||
fs.writeFileSync( | ||
`${_outputDir}/${_sessionDir}/${_editionFrom}.png`, | ||
_canvas.toBuffer("image/png") | ||
); | ||
}; | ||
function saveImage(_canvas, _filename) { | ||
fs.writeFileSync( | ||
_filename, | ||
_canvas.toBuffer("image/png") | ||
); | ||
}; | ||
function signImage(_ctx, _sign) { | ||
@@ -162,8 +136,2 @@ if (!_sign) { | ||
function writeMetadataCsv(_records, _outputDir, _sessionDir) { | ||
createDirectory(_outputDir, _sessionDir); | ||
fs.writeFileSync(`${_outputDir}/${_sessionDir}/metadata.csv`, _records.join("\n")); | ||
}; | ||
function getCategories(_layers) { | ||
@@ -201,3 +169,3 @@ const categories = {} | ||
async function generate(_config, _outputDir, _sessionDir, _progressCallback) { | ||
async function generate(_config, _callback) { | ||
_config.categories = getCategories(_config.layers) | ||
@@ -236,15 +204,13 @@ _config.layers = getNoneRarity(_config.layers) | ||
signImage(ctx, _config.sign); | ||
saveImageCollection(canvas, editionFrom, _outputDir, _sessionDir); | ||
dnaCollection.add(newDna.join(dnaSeparator)); | ||
metadataRecords.push(formatMetadataRecord(editionFrom, elements)) | ||
editionCount++; | ||
_callback(editionCount, `${editionFrom}.png`, canvas.toBuffer("image/png")); | ||
editionFrom++; | ||
}); | ||
dnaCollection.add(newDna.join(dnaSeparator)); | ||
editionFrom++; | ||
editionCount++; | ||
_progressCallback(editionCount); | ||
} | ||
writeMetadataCsv(metadataRecords, _outputDir, _sessionDir); | ||
return metadataRecords | ||
}; | ||
@@ -263,3 +229,3 @@ | ||
await Promise.all(loadedElements).then((elements) => { | ||
return await Promise.all(loadedElements).then((elements) => { | ||
elements.forEach((element) => { | ||
@@ -270,3 +236,4 @@ drawElement(ctx, element); | ||
signImage(ctx, _config.sign); | ||
saveImage(canvas, "Extended.png"); | ||
return canvas.toBuffer("image/png") | ||
}); | ||
@@ -294,3 +261,3 @@ } | ||
await Promise.all(loadedElements).then((elements) => { | ||
return await Promise.all(loadedElements).then((elements) => { | ||
elements.forEach((element) => { | ||
@@ -301,23 +268,23 @@ drawElement(ctx, element); | ||
signImage(ctx, _config.sign); | ||
saveImage(canvas, "Preview.png"); | ||
return canvas.toBuffer("image/png") | ||
}); | ||
} | ||
async function compress(_filenames, _dimention, _outputDir, _progressCallback) { | ||
const canvas = createCanvas(_dimention.width, _dimention.height); | ||
async function compress(_config, _callback) { | ||
const canvas = createCanvas(_config.dimention.width, _config.dimention.height); | ||
const ctx = canvas.getContext("2d"); | ||
const loadedImages = []; | ||
for (const filename of _filenames) { | ||
loadedImages.push(loadImage(filename)) | ||
for (const image of _config.images) { | ||
loadedImages.push(loadImage(image)) | ||
} | ||
await Promise.all(loadedImages).then((images) => { | ||
let editionCount = 0; | ||
let progress = 0; | ||
for (const image of images) { | ||
ctx.drawImage(image, 0, 0, _dimention.width, _dimention.height) | ||
saveImage(canvas, `${_outputDir}/${image.src}`); | ||
ctx.drawImage(image, 0, 0, _config.dimention.width, _config.dimention.height) | ||
editionCount++; | ||
_progressCallback(editionCount) | ||
progress++; | ||
_callback(progress, image.src, canvas.toBuffer("image/png")) | ||
} | ||
@@ -324,0 +291,0 @@ }) |
{ | ||
"name": "nft-art-engine", | ||
"version": "0.1.14", | ||
"version": "0.1.15", | ||
"description": "NFT ART Engine is a package used to create multiple different instances of artworks based on provided layers.", | ||
@@ -5,0 +5,0 @@ "author": "Bagus Abdul Kurniawan", |
233780
305