pjimg Requirements

The purpose of this document is to detail the requirements for :mod:’pjimg’, a Python image and animation generator. This is an initial take for the purposes of planning. There may be additional requirements or non-required features added in the future.

Purpose

The purposes of pjimg are:

  • Generate images and animations that involve simple patterns interacting,

  • Be a more accurate name than pjinoise was,

  • Consolidate the separate “img*” modules.

Functional Requirements

The following are the functional requirements for pjimg:

  • Generate images and animations of a given size.

Technical Requirements

The following are the technical requirements for pjimg:

  • Provide a common namespace for the “img*” modules.

  • Consolidate common utilities used across the “img*” modules.

Design Discussion

The following is a deeper discussion of certain aspects of the pjimg design. This primarily exists as a place to talk through design challenges in order do find solutions. It is not intended to be comprehensive nor even completely accurate to the final design.

Why?

Good question. I split up pjinoise. Why am I bringing it back with a different name?

The main reason is that the individual “img*” modules aren’t very useful on their own. I suppose they could be used in someone else’s image generation code, but is that really going to happen? Who needs imgwriter who isn’t implementing it on their own? It just a wrapper around open-cv for file I/O.

Also, I just feel bad about using up the namespace of five different modules if I ever put this on PYPI. I’m not sure I’ll ever want to do that. But, if I do, I’d rather it all be one name.

How Do I Make Images with It?

pjinoise had a configuration syntax that could be used to generate images. The “img*” scraped that in favor of making every image a Python script. So, what now?

I’m probably going to stick with Python scripts. The configuration syntax was too much of a pain to manage. That said pjimg can still have some features that make writing those scripts easier. And, who knows. Maybe a GUI can be set up for it eventually.

So, What Is pjimg?

It is:

  • A namespace for the “img*” modules.

  • A common module to handle code shared between those modules.

  • Possibly some workflow and UI tools to make working with the modules easier.