{"id":15065405,"url":"https://github.com/pierogis/pierogis","last_synced_at":"2025-08-20T06:32:57.987Z","repository":{"id":42030242,"uuid":"311240576","full_name":"pierogis/pierogis","owner":"pierogis","description":"an image and animation processing framework","archived":false,"fork":false,"pushed_at":"2022-04-17T06:06:31.000Z","size":33737,"stargazers_count":118,"open_issues_count":3,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-12-18T05:54:07.575Z","etag":null,"topics":["glitch","numpy","pipeline","pixel"],"latest_commit_sha":null,"homepage":"https://docs.pierogis.live/en/stable/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pierogis.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":"2020-11-09T06:10:46.000Z","updated_at":"2024-07-31T08:38:29.000Z","dependencies_parsed_at":"2022-08-12T02:50:46.062Z","dependency_job_id":null,"html_url":"https://github.com/pierogis/pierogis","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierogis%2Fpierogis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierogis%2Fpierogis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierogis%2Fpierogis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pierogis%2Fpierogis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pierogis","download_url":"https://codeload.github.com/pierogis/pierogis/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230400616,"owners_count":18219831,"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":["glitch","numpy","pipeline","pixel"],"created_at":"2024-09-25T00:37:59.496Z","updated_at":"2024-12-19T08:08:31.527Z","avatar_url":"https://github.com/pierogis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pierogis\n\n[![version](https://img.shields.io/pypi/v/pierogis.svg)](https://pypi.org/project/pierogis/)\n[![docs](https://img.shields.io/readthedocs/pierogis/stable.svg)](https://docs.pierogis.live)\n\n[![discord](https://img.shields.io/badge/discord-flat.svg?logo=discord\u0026logoColor=ffffff\u0026color=7389D8)](https://discord.gg/9XpEjMw3Rx)\n[![twitter](https://img.shields.io/badge/twitter-flat.svg?logo=twitter\u0026logoColor=ffffff\u0026color=1DA1F2)](https://twitter.com/pierogis_chef)\n\n`pierogis` is a framework for image and animation processing. Ingredients that describe image processing functions can be assembled\ninto recipes and used to cook an image or animation.\n\n```bash\npip install pierogis\npierogis custom teton.png \"resize --width 768 --height 768; sort; quantize; resize --scale 4\" -o output.png\n# or\npierogis custom teton.png recipe.txt -o output.png\n```\n\n`recipe.txt`\n```text\nresize --width 768 --height 768;\nsort;\nquantize -c 000000 ffffff 668a61 cbb8a2 b6d655 434d1f 5fb7d2 6d8ab9 3876c1 515b5e a8725f d7b6aa 3c2329 f78693 637186 00407A;\nresize -s 4;\n```\n\u003cp align=\"center\"\u003e\n  \u003cimg align=\"center\" alt=\"sorted and quantized teton\" src=\"https://media.githubusercontent.com/media/pierogis/pierogis/develop/demo/out/teton.png\"\u003e\n\u003c/p\u003e\n\n- [install](#install)\n- [features](#features)\n- [acknowledgements](#acknowledgements)\n- [issues and contributing](#issues-and-contributing)\n\n\u003ca name=\"install\"\u003e\u003c/a\u003e\n## install\n\n**install from a wheel with pip**\n\n```sh\npip install pierogis\n```\n\nDepends on `numpy` and `PIL`. PIL requires some external C libraries for handling image files. You probably don't have\nto worry about this. If you do, try a `conda` installation.\n\nTo build from source (either the repository or the sdist), you will need to install the rust stable toolchain.\n\n```bash\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\npip install -r requirements.txt\n\npip install .\n```\n\nNote that the python package was previously called `pyrogis`.\nThat was supposed to denote the difference between the package\nand the Rust algorithms (`pierogis_rs`) that it relied on.\n\nThese two parts were combined into one namespace in the `0.4.0` release,\nand the split naming became redundant.\n\nStill, `pip install pyrogis==0.4.0` will install `pierogis`.\n\n\u003ca name=\"features\"\u003e\u003c/a\u003e\n## features\n\n- **CLI** - Use a `rich` cli to cook à la carte recipes, or provide a recipe in a document (see [docs](https://docs.pierogis.live/en/stable/cli.html))\n- **Animations** - Animations (gifs and movies) can be cooked in one command\n- **Extendable** - Easy to create custom manipulations (see [docs](https://docs.pierogis.live/en/stable/ingredients.html#extending))\n- **Lazy Rendering** - Render a manipulation after constructing your pipeline (see [docs](https://docs.pierogis.live/en/stable/ingredients.html#dish))\n- **Numpy or Rust backend** - Image processing functions use Numpy for (python relative) fast operations. Some\n  ingredients use compiled `Rust` for more speed.\n  \n\u003cp align=\"center\"\u003e\n  \u003cimg align=\"center\" alt=\"terminal screen\" src=\"https://media.githubusercontent.com/media/pierogis/pierogis/develop/demo/terminal.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg align=\"center\" alt=\"wires recipe\" src=\"https://media.githubusercontent.com/media/pierogis/pierogis/develop/demo/recipe.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg align=\"center\" src=\"https://media.githubusercontent.com/media/pierogis/pierogis/develop/demo/out/wires.gif\"\u003e\n\u003c/p\u003e\n\n\u003ca name=\"acknowledgements\"\u003e\u003c/a\u003e\n## acknowledgements\n\nThe original python [pixelsort](https://github.com/satyarth/pixelsort) package inspired this package. While the\nunderlying [algorithm](https://github.com/kimasendorf/ASDFPixelSort) of that package and of `sort` in this one is\nsupposed to be functionally the same, details of the implementation may differ.\n\nA quantization algorithm used in this package uses [`rscolorq`](https://github.com/okaneco/rscolorq), which\nis a Rust port of [`scolorq`](http://people.eecs.berkeley.edu/~dcoetzee/downloads/scolorq/),\nitself an implementation of Spatial Color Quantization.\n\nAn algorithm called\n[`MMPX`](https://casual-effects.com/research/McGuire2021PixelArt/index.html)\nis used in this package to do 2x image magnification.\nIt is implemented in a separate [Rust package](https://github.com/pierogis/mmpx-rs).\n\n\u003ca name=\"issues-and-contributing\"\u003e\u003c/a\u003e\n## issues and contributing\n\nWhen you encounter an error, there are some guidelines that will make it easier to help you:\n\n- Ensure that you are using the latest version of the package. It's early days so errors and updates will be frequent.\n  Use `pip uninstall pierogis` then `pip install pierogis --no-cache-dir` to reinstall.\n- Provide the version of `pierogis` that you are using in issues to rule that out.\n  `pip list` -\u003e pierogis \\_.\\_.\\_\n- Provide the traceback or error message if relevant.\n- Provide your os and any other specific information about how you are trying to use the package.\n- Provide the code or the cli command that triggered the error.\n- If the problem is visual: that can be more difficult to debug. Share a link to an image hosting site if you want to\n  share what you are seeing in an issue.\n- If you are getting different behavior than you expect: that could be an error or a feature.\n- If your problem is with installation: try conda, preinstall `numpy` and `pillow`, install the rust toolchain, and\n  start praying. There will be a website with a visual editor for this software so stay tuned.\n\nHopefully all levels of skills can use this package. Any form of contributing is appreciated; passive-aggressive\nsemi-anonymous thumbs down is not appreciated.\n\nEveryone using and contributing to this package is doing it for the love of the game.\n\nDon't feel like your issue is too small to make an issue. Pull requests are always welcome and anyone interested in dev\nwork should join the\n[discord](https://discord.gg/9XpEjMw3Rx).\n\n`Ingredient` type algorithm/function suggestions can go in the ingredients channel. You can post your creations in the\ndemo channel as well.\n\n\u003ca name=\"disclaimer\"\u003e\u003c/a\u003e\n## disclaimer\n\nThis library is licensed under the [AGPL v3](LICENSE).\n\nArt used for demos is the property of their respective owners.\n\nThe following statements are not necessarily legally binding.\nIf they seem to contradict the license, follow the license.\n\nThe licenses of packages used by this software vary, but are understood to be compatible with AGPL.\nIf you take issue with this package's use of other software regardless of legal concern,\nplease reach out, and it can be removed from this package.\n\nAlso understand that there may be implications from *those* licenses on your use of *this* package.\n\nReview the AGPL yourself if you intend to use this package in any software,\nbut know that it was chosen to encourage that all related works be open source.\n\nThe use of AGPL does not mean that this cannot be monetized,\nbut it does generally mean that you will need to share source code of improvements on this package;\nat least modules related to this package.\n\nIf your paid derivative work adds marginal value to what is included in this package,\nthe author reserves the right to go to great lengths to make a free (and better) alternative to your derivative work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierogis%2Fpierogis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpierogis%2Fpierogis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpierogis%2Fpierogis/lists"}