{"id":16677007,"url":"https://github.com/abcaeffchen/generativeart","last_synced_at":"2025-07-28T20:09:06.033Z","repository":{"id":45176509,"uuid":"92461658","full_name":"AbcAeffchen/GenerativeArt","owner":"AbcAeffchen","description":"Just a generator for images","archived":false,"fork":false,"pushed_at":"2018-04-25T11:49:47.000Z","size":772,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-13T06:14:05.836Z","etag":null,"topics":["generative-art","image-generator"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AbcAeffchen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-26T02:01:28.000Z","updated_at":"2023-03-22T19:50:17.000Z","dependencies_parsed_at":"2022-07-13T19:10:55.320Z","dependency_job_id":null,"html_url":"https://github.com/AbcAeffchen/GenerativeArt","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AbcAeffchen/GenerativeArt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbcAeffchen%2FGenerativeArt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbcAeffchen%2FGenerativeArt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbcAeffchen%2FGenerativeArt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbcAeffchen%2FGenerativeArt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AbcAeffchen","download_url":"https://codeload.github.com/AbcAeffchen/GenerativeArt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AbcAeffchen%2FGenerativeArt/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267578003,"owners_count":24110351,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["generative-art","image-generator"],"created_at":"2024-10-12T13:24:52.616Z","updated_at":"2025-07-28T20:09:06.018Z","avatar_url":"https://github.com/AbcAeffchen.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GenerativeArt\n\nThis is a just for fun project aiming to generate some nice images.\n\n\u003c!-- todo add examples here --\u003e\n![Example A](/examples/A.png)\n![Example B](/examples/B.png)\n![Example C](/examples/C.png)\n![Example D](/examples/D.png)\n![Example E](/examples/E.png)\n![Example F](/examples/F.png)\n\n## Compiling\n```bash\nmkdir build \u0026\u0026 cd build \u0026\u0026 mkdir images\ncmake ..\ncmake --build . --target GenerativeArt -j\n```\n\n## How to use it\n\u003c!-- todo  --\u003e\n\n## Options\n```text\nUsage: GenerativeArt [OPTIONS]\n\nOptions:\n  -h,--help                   Print this help message and exit\n\nProgram Options:\n  -s,--num-samples UINT=100   The number of samples generated.\n  --color-permutations        Stores six color permutations of each image.\n  --no-scale                  Scaling adjusts the resolution, such that the resulting image's shortest edge has at leastthe number of pixels set as resolution.\n  -v,--verbose                Shows details about what the program is doing.\n  -w,--write-ini TEXT         Writes the current settings into the given ini file.\n  --config TEXT               Read an ini file\n  -o,--out TEXT=images/       The directory where the images are stored.\n\nRandomness Options:\n  -f,--file-name TEXT Excludes: --function-depth --function-params --color-poly-deg --color-poly-params --function-seed --color-seed --num_unary_functions --num_binary_functions\n                              The file name of a sample image. This can be used to regenerate the image on a higher resolution. If used you cannot use any of the randomness options.\n  -D,--function-depth UINT UINT=4 7 Excludes: --file-name\n                              The domain the depth of the random function is drawn from.\n  -P,--function-params FLOAT FLOAT=1 1.9 Excludes: --file-name\n                              The domain the parameters of the random function is drawn from.\n  -d,--color-poly-deg UINT UINT=2 3 Excludes: --file-name\n                              The domain the degree of the random color polynomials is drawn from.\n  -p,--color-poly-params FLOAT FLOAT=-96 96 Excludes: --file-name\n                              The domain the parameters of the random color polynomials is drawn from.\n  -F,--function-seed UINT Excludes: --file-name\n                              The seed for the random function. If provided only one image is generated.\n  -C,--color-seed UINT Excludes: --file-name\n                              The seed for the color functions. If provided only one image is generated.\n  --num_unary_functions UINT=13 Excludes: --file-name\n                              Number of unary functions available. This is just to support more functions without breaking generation of old images.\n  --num_binary_functions UINT=4 Excludes: --file-name\n                              Number of binary functions available. This is just to support more functions without breaking generation of old images.\n\nImage Options:\n  -r,--resolution UINT=200    The resolution the image(s) are generated in.\n  -x,--x-domain FLOAT FLOAT=0 1\n                              Min and max values of the domain of the x dimension.\n  -y,--y-domain FLOAT FLOAT=0 1\n                              Min and max values of the domain of the y dimension.\n  -n,--no-normalization       Stops normalizing the color transitions, that reduces the flickering.\n  --projection-type {Cap=0, Periodic=1, Smooth Periodic=2}=0\n                              The way the values of the color polynomials get projected into the [0,255] range.\n                              - Cap: x -\u003e 255 for x \u003e 255, x -\u003e 0 for x \u003c 0, x -\u003e x else.\n                              - Periodic: x -\u003e x mod 256\n                              - Smooth Periodic: x -\u003e x mod 2 -\u003e 255 * x^2 * (x-2)^2\n```\n\n## Development Notices\nNew functions can be added to the function pool without\nrisking that the old results cannot be reproduced.\nBut the order an number of `rand()` calls must not\nbe changed to ensure this! If the order or number of the\n`rand()` calls changes the whole random function changes.\n\n## How it works\n\n1. A random function is drawn as a call tree of functions from\na function pool.\n2. For each color (red, green, blue) is a random polynomial drawn.\n3. Generate for each pixel a value using the random function.\n4. Generate a color value for each pixel using the random color functions\nand the value from the first function as input.\n5. The color values for each pixel get normalized to smooth\ncolor changes. (can be turned off)\n6. Write the image to disk using a file name that contains all settings\nso you can easily reproduce the image.\n\n## TODO\n- Improve the seed handling. Color map seeds turned out mostly useless.\n- try other ways to project the result of the random function into [0,255].\n- Maybe the performance can be improved by using SIMD.\n- check for all while / all black images and don't store them.\n\n## Dependencies\n- Commandline Parser [cxxopts](https://github.com/jarro2783/cxxopts) is\nused as a submodule.\n- [png++ 0.2.9](http://savannah.nongnu.org/projects/pngpp/) is used to generate\npng files.\nTherefore libpng and libzip needs to be installed.\n- OpenMP is used to generate an image in parallel.\n\n## You Like the Project?\nHave a look a my [printed art](https://www.redbubble.com/people/abcaeffchen)\nor my [amazon list](https://www.amazon.de/gp/registry/wishlist/3HVLST6MM4MNH/).\n\n## Licence\nGPL v3.0","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabcaeffchen%2Fgenerativeart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabcaeffchen%2Fgenerativeart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabcaeffchen%2Fgenerativeart/lists"}