Generative Art GeneratorPython
موضوع‌ها
۷
فورک‌ها
۶۲
ستاره‌ها
۷۸۴
تاریخ ایجاد
۲۹ شهریور ۱۴۰۰
آخرین بروزرسانی
۷ روز قبل
لایسنس

# Samila

## Overview

Samila is a generative art generator written in Python, Samila let's you create arts based on many thousand points. The position of every single point is calculated by a formula, which has random parameters. Because of the random numbers, every image looks different.

 Open Hub PyPI Counter Github Stars
 Branch master dev CI
 Code Quality

## Installation

### Source code

• Run pip install -r requirements.txt or pip3 install -r requirements.txt (Need root access)
• Run python3 setup.py install or python setup.py install (Need root access)

### Easy install

• Run easy_install --upgrade samila (Need root access)

## Usage

### Magic

>>> import matplotlib.pyplot as plt
>>> from samila import GenerativeImage
>>> g = GenerativeImage()
>>> g.generate()
>>> g.plot()
>>> plt.show()

### Basic

>>> import random
>>> import math
>>> def f1(x, y):
result = random.uniform(-1,1) * x**2  - math.sin(y**2) + abs(y-x)
return result
>>> def f2(x, y):
result = random.uniform(-1,1) * y**3 - math.cos(x**2) + 2*x
return result
>>> g = GenerativeImage(f1, f2)
>>> g.generate()
>>> g.plot()
>>> g.seed
188781
>>> plt.show()

### Projection

>>> from samila import Projection
>>> g = GenerativeImage(f1, f2)
>>> g.generate()
>>> g.plot(projection=Projection.POLAR)
>>> g.seed
829730
>>> plt.show()
• Supported projections : RECTILINEAR, POLAR, AITOFF, HAMMER, LAMBERT and MOLLWEIDE
• Default projection is RECTILINEAR

### Range

>>> g = GenerativeImage(f1, f2)
>>> g.generate(start=-2*math.pi, step=0.01, stop=0)
>>> g.plot()
>>> g.seed
234752
>>> plt.show()

### Color

>>> g = GenerativeImage(f1, f2)
>>> g.generate()
>>> g.plot(color="yellow", bgcolor="black", projection=Projection.POLAR)
>>> g.seed
1018273
>>> plt.show()
• Supported colors are available in VALID_COLORS list
• color and bgcolor parameters support color name and RGB/RGBA formats

### Regeneration

>>> g = GenerativeImage(f1, f2)
>>> g.generate(seed=1018273)
>>> g.plot(projection=Projection.POLAR)
>>> plt.show()

### NFT.storage

Upload generated image directly to NFT.storage

>>> g.nft_storage(api_key=YOUR_API_KEY)
{'status': True, 'message': 'Everything seems good'}

### Save image

Save generated image

{'status': True, 'message': 'Everything seems good'}

Save generated image in higher resolutions

{'status': True, 'message': 'Everything seems good'}

### Save data

Save generated image data

So you can load it into a GenerativeImage instance later by

>>> g = GenerativeImage(data=open('test.json', 'r'))

### Save config

Save generated image config. It contains string formats of functions which is also human readable.

So you can load it into a GenerativeImage instance later by

>>> g = GenerativeImage(config=open('config.json', 'r'))

## Mathematical details

Samila is simply a transformation between a square-shaped space from the Cartesian coordinate system to any arbitrary coordination like Polar coordinate system.

### Example

We have set of points in the first space (left square) which can be define as follow:

And bellow functions are used for transformation:

>>> def f1(x, y):
result = random.uniform(-1,1) * x**2 - math.sin(y**2) + abs(y-x)
return result
>>> def f2(x, y):
result = random.uniform(-1,1) * y**3 - math.cos(x**2) + 2*x
return result

here we uses Projection.POLAR so later space will be the polar space and we have:

>>> g = GenerativeImage(f1, f2)
>>> g.generate(seed=10)
>>> g.plot(projection=Projection.POLAR)

## Issues & bug reports

Just fill an issue and describe it. We'll check it ASAP!

• Please complete the issue template

## Dependencies

 master dev

## References

1- Schönlieb, Carola-Bibiane, and Franz Schubert. "Random simulations for generative art construction–some examples." Journal of Mathematics and the Arts 7.1 (2013): 29-39.
2- Create Generative Art with R
3- NFT.storage : Free decentralized storage and bandwidth for NFTs

### Star this repo

Give a ⭐️ if this project helped you!

### Donate to our project

If you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) .

#### Bitcoin

1KtNLEEeUbTEK9PdN6Ya3ZAKXaqoKUuxCy

#### Ethereum

0xcD4Db18B6664A9662123D4307B074aE968535388

#### Doge

DDUnKpFQbBqLpFVZ9DfuVysBdr249HxVDh

#### Tron

TCZxzPZLcJHr2qR3uPUB1tXB6L3FDSSAx7

#### Ripple

rN7ZuRG7HDGHR5nof8nu5LrsbmSB61V1qq

#### Binance Coin

bnb1zglwcf0ac3d0s2f6ck5kgwvcru4tlctt4p5qef

#### Tether

0xcD4Db18B6664A9662123D4307B074aE968535388

#### Dash

Xd3Yn2qZJ7VE8nbKw2fS98aLxR5M6WUU3s

#### Stellar

GALPOLPISRHIYHLQER2TLJRGUSZH52RYDK6C3HIU4PSMNAV65Q36EGNL

#### Zilliqa

zil1knmz8zj88cf0exr2ry7nav9elehxfcgqu3c5e5