Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ninest/craftpainting

🌄 Create Minecraft-style paintings
https://github.com/ninest/craftpainting

craftpainting flask flask-web image minecraft pillow python python3

Last synced: 5 days ago
JSON representation

🌄 Create Minecraft-style paintings

Awesome Lists containing this project

README

        

Craftpainting


Create Minecraft-like paintings in the terminal



Version


PyPI - Downloads

Make a PR
MIT

Buy Me A Coffee


sunset dense

## 🚀 Usage

Install it by running

```bash
pip install craftpainting

# on on mac,
pip3 install craftpainting
```

### CLI
```bash
craftpainting input_path.png -s SIZE -r REPETITIONS -o output_path.png
```

#### size
Enter a string of `WxH`, such as `2x1`. Units are Minecraft blocks, so a width of `2x1` translates to an image of `32x16`.

#### repetitions
The number of times enlarge the image. By default, an image `32x16` or `48x32` is too small and doesn't look good.

The value of `-r` dictates how many times each pixel should be multiplied. It's `15` by default, so an image of size `2x1` in blocks looks like it's `32x16` pixels, but is actually `480x240`.

Set to `0` to get the minimum possible size.

#### gray
Append `-g` (or `--gray`) to the command to make the painting black and white.

#### outputpath
If no output path is specified, the image will be shown, but won't be saved.

### Python
```python
from craftpainting import create_painting, enlarge_image
from PIL import Image

image = Image.open('images/sunset_dense.jpg')
p = create_painting(image) # create the (super tiny) image
p = enlarge_image(p, repetitions=15) # enlarge it so it looks better
# note that the default repetitions is 10

p.show()
```

To use in Python, Pillow is required. Install it:

```bash
pip install pillow

# or on mac,
pip3 install pillow
```

### Web
Visit [craftpainting.herokuapp.com](https://craftpainting.herokuapp.com/).


web demo

*Note: the website is hosted on Heroku on the free plan, so it will take around 10 seconds to load.*

## 🏳️‍🌈 Examples
### Sunset dense
```bash
craftpainting sunset_dense.jpg -o painting_sunset_dense.jpg
```


sunset dense

#### Original


sunset dense

### Beach
```bash
craftpainting beach.png -s 3x2 -o painting_beach.png
```


beach

#### Original


beach

### Code
```bash
craftpainting code.jpg -s 2x2 -o painting_code.jpg
```


code

#### Original


code

### Landscape
```bash
craftpainting landscape.jpg -g -r 5 -o painting_landscape.jpg
```

Smaller values of `repetitions` produce images of smaller sizes.


code

#### Original


code

## 🛠 Build setup

```bash
# install all packages
cd src/
pipenv shell
pipenv install

# run test.py
python test.py
```

### Web
```bash
cd web/
pipenv shell
pipenv install

# run the site on the dev server
python app.py

# host on heroku
git add .
git commit -m "update site"
cd .. # go to the route directory
git subtree push --prefix web heroku master
```

## ♥️ Support
If you liked this project, consider supporting by
- ⭐️ Starring the repository
- 🎒 Checking out my other [projects](https://github.com/ninest)
- ☕️ Buying me [coffee](https://www.buymeacoffee.com/ninest)

## 📜 License
- MIT
- Sunset Dense taken from [Minecraft Gamepedia](https://minecraft.gamepedia.com/Painting)
- Other images taken from [Pexels](https://www.pexels.com/)