pixelgen2 / generate.py
DJLougen's picture
PixelGen2: compositional hand-weighted pixel-art generator + 4 scaling experiments
6fbb543 verified
Raw History Blame Contribute Delete
1.19 kB
"""Generate a sprite from a prompt.
python generate.py "red potion" --seed 3 --scale 8 --out sprite.png
"""
import argparse
import sys
from pathlib import Path
from pixelgen import weights
from pixelgen.compose import PixelGen2
from pixelgen.model import PixelGen
def main(argv=None):
ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
ap.add_argument("prompt")
ap.add_argument("--seed", type=int, default=0)
ap.add_argument("--scale", type=int, default=8)
ap.add_argument("--out", default="sprite.png")
ap.add_argument("--weights", default=None, help="load a saved weights file instead of building")
ap.add_argument("--v1", action="store_true", help="use the original single-part model")
args = ap.parse_args(argv)
model = weights.load(args.weights) if args.weights else (PixelGen() if args.v1 else PixelGen2())
img = model.sprite(args.prompt, seed=args.seed, scale=args.scale)
out = Path(args.out)
out.parent.mkdir(parents=True, exist_ok=True)
img.save(out)
print(f"wrote {out} ({img.size[0]}x{img.size[1]})")
return 0
if __name__ == "__main__":
sys.exit(main())