{"id":15569392,"url":"https://github.com/abey79/vpype-pixelart","last_synced_at":"2025-10-02T23:35:17.532Z","repository":{"id":40660335,"uuid":"233553917","full_name":"abey79/vpype-pixelart","owner":"abey79","description":"Pixel art plotting in vpype","archived":false,"fork":false,"pushed_at":"2022-12-28T10:20:48.000Z","size":32,"stargazers_count":79,"open_issues_count":2,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-01-09T02:22:23.948Z","etag":null,"topics":["generative-art","pen-plotter","pixel-art","vector-graphics"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abey79.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["abey79"],"ko_fi":"abey79"}},"created_at":"2020-01-13T09:04:57.000Z","updated_at":"2024-10-01T14:53:54.000Z","dependencies_parsed_at":"2023-01-31T06:30:36.981Z","dependency_job_id":null,"html_url":"https://github.com/abey79/vpype-pixelart","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abey79%2Fvpype-pixelart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abey79%2Fvpype-pixelart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abey79%2Fvpype-pixelart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abey79%2Fvpype-pixelart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abey79","download_url":"https://codeload.github.com/abey79/vpype-pixelart/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235049798,"owners_count":18927864,"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","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","pen-plotter","pixel-art","vector-graphics"],"created_at":"2024-10-02T17:27:47.750Z","updated_at":"2025-10-02T23:35:12.271Z","avatar_url":"https://github.com/abey79.png","language":"Python","funding_links":["https://github.com/sponsors/abey79","https://ko-fi.com/abey79"],"categories":[],"sub_categories":[],"readme":"# vpype-pixelart\n\n[_vpype_](https://github.com/abey79/vpype) plug-in to plot pixel art.\n\n## Usage\n\n### Convert pixelart image to vectors\n\nThe `pixelart` command takes an image file as input and converts it to lines according to one of three modes (`big`, `line`, and `small` – see examples below). Each unique color in the the input file results in a new layer created. Pixels which are 100% transparent (alpha = 0) yield no output.\n\nExample invocation:\n\n```bash\n$ vpype pixelart --mode snake --pen-width .35mm input.png linesort write output.svg\n```\n\nInline help:\n\n```bash\n$ vpype pixelart --help\n```\n\n### Convert geometries to bitmaps and back to vector\n\nThe `pixelize` command rasterizes the current geometries into a bitmap, and converts them back to vectors similarly to the `pixelart` command.\n\nExample invocation:\n\n```bash\n$ vpype read input.svg pixelize --mode snake --pen-width .35mm linesort write output.svg\n```\n\nInline help:\n\n```bash\n$ vpype pixelize --help\n```\n\n\n## Examples\n\n### Mode `big`\n\nIn this mode, each pixel is drawn using a 5x5 square spiral. The pixel pitch is thus five times the specified pen width.\n\nCactus sprites from [Super Mario World](https://en.wikipedia.org/wiki/Super_Mario_World):\n\n\u003cimg src=\"https://i.imgur.com/uRhAOJv.png\" alt=\"cactus\"\u003e\n\nResult plotted with Pentel Sign Pen (using `--pen-width 0.6mm`):\n\n\u003cimg src=\"https://i.imgur.com/pMLkdvG.jpg\" alt=\"big mode plotted pixelart\" width=300\u003e\n\n### Mode `line`\n\nIn this mode, horizontal lines are generated for horizontal sequences of same-color pixels. The pixel pitch is equal to the specified pen width. \n\nOriginal art by [Reddit](https://www.reddit.com/) user [u/\\_NoMansDream](https://www.reddit.com/user/_NoMansDream/):\n\n\u003cimg src=\"https://i.redd.it/g1nv7tf20aw11.png\" alt=\"pixel art by u/_NoMansDream\" width=600\u003e\n\nResult plotted with Pentel Sign Pen (using `--pen-width 0.6mm`):\n\n\u003cimg src=\"https://i.imgur.com/dAPqFGV.jpg\" alt=\"line mode plotted pixelart\" width=600\u003e\n\n\n### Mode `snake`\n\nIn this mode, [snake](https://en.wikipedia.org/wiki/Snake_(video_game_genre)-like lines attempt to traverse zones of contiguous, same-color pixels. Again, the pixel pitch is equal to the specified pen width.\n\nDetail of the snake algoritm:\n\n\u003cimg width=\"600\" alt=\"image\" src=\"https://user-images.githubusercontent.com/49431240/163547592-0714d103-b27d-4ba9-a148-a26213523697.png\"\u003e\n\nResult plotted with Pentel Sign Pen (using `--pen-width 0.5mm`):\n\n![vpype banner in MacPaint UX](https://user-images.githubusercontent.com/49431240/163547460-49c6e68d-11ed-4aff-a935-6e663bff4a8d.jpeg)\n\n\n### `pixelize` command\n\nSeries of cubes created with [vpype-perspective](https://github.com/abey79/vpype-perspective) and pixelated using `pixelize`:\n\n\u003cimg width=\"600\" alt=\"image\" src=\"https://user-images.githubusercontent.com/49431240/165774053-d29ad6b4-a82c-4d9b-bab7-cd73e827f351.jpeg\"\u003e\n\n\n\n## Installation\n\nSee _vpype_'s [installation instructions](https://vpype.readthedocs.io/en/latest/install.html) for information on how to install _vpype_.\n\n### Existing _vpype_ installation\n\nIf *vpype* was installed using pipx, use the following command:\n\n```bash\n$ pipx inject vpype vpype-pixelart\n```\n\nIf *vpype* was installed using pip in a virtual environment, activate the virtual environment and use the following command:\n\n```bash\n$ pip install vpype-pixelart\n```\n\nCheck that your install is successful:\n\n```\n$ vpype --help\nUsage: vpype [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...\n\nOptions:\n  -v, --verbose\n  -I, --include PATH  Load commands from a command file.\n  --help              Show this message and exit.\n\nCommands:\n[...]\n  Plugins:\n    pixelart   Plot pixel art.\n[...]\n```\n\n### Stand-alone installation\n\nUse this method if you need to edit this project. First, clone the project:\n\n```bash\n$ git clone https://github.com/abey79/vpype-pixelart.git\n$ cd vpype-pixelart\n```\n\nCreate a virtual environment:\n\n```bash\n$ python3 -m venv venv\n$ source venv/bin/activate\n$ pip install --upgrade pip\n```\n\nInstall _vpype-pixelart_ and its dependencies (including _vpype_):\n\n```bash\n$ pip install -e .\n```\n\nCheck that your install is successful:\n\n```\n$ vpype --help\nUsage: vpype [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...\n\nOptions:\n  -v, --verbose\n  -I, --include PATH  Load commands from a command file.\n  --help              Show this message and exit.\n\nCommands:\n[...]\n  Plugins:\n    pixelart   Plot pixel art.\n[...]\n```\n\n## License\n\nSee the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabey79%2Fvpype-pixelart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabey79%2Fvpype-pixelart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabey79%2Fvpype-pixelart/lists"}