{"id":14961431,"url":"https://github.com/grymmjack/godot-img2ans","last_synced_at":"2026-02-14T04:08:00.807Z","repository":{"id":254441753,"uuid":"841693845","full_name":"grymmjack/godot-img2ans","owner":"grymmjack","description":"Godot IMG2ANS converts pixels into textmode art using ANSI codes","archived":false,"fork":false,"pushed_at":"2024-09-08T05:44:06.000Z","size":39141,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-24T20:43:03.795Z","etag":null,"topics":["16colors","80x25","80x50","ansi","ansicolor","bbs","cga","dos","ega","gdscript","gif2ans","godot","godot-engine","godot-utility","jpg2ans","png2ans","sysop","termcolors","textart","textmode"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/watch?v=sJiqoQ2E0M8","language":"GDScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grymmjack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-12T22:23:43.000Z","updated_at":"2025-10-12T03:48:31.000Z","dependencies_parsed_at":"2024-09-08T06:49:37.963Z","dependency_job_id":null,"html_url":"https://github.com/grymmjack/godot-img2ans","commit_stats":{"total_commits":37,"total_committers":2,"mean_commits":18.5,"dds":"0.027027027027026973","last_synced_commit":"090e27655e2a620178bde4cfe7eb0b9190c98c3f"},"previous_names":["grymmjack/godot-img2ans"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/grymmjack/godot-img2ans","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grymmjack%2Fgodot-img2ans","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grymmjack%2Fgodot-img2ans/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grymmjack%2Fgodot-img2ans/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grymmjack%2Fgodot-img2ans/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grymmjack","download_url":"https://codeload.github.com/grymmjack/godot-img2ans/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grymmjack%2Fgodot-img2ans/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29435576,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T03:34:37.767Z","status":"ssl_error","status_checked_at":"2026-02-14T03:34:09.092Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["16colors","80x25","80x50","ansi","ansicolor","bbs","cga","dos","ega","gdscript","gif2ans","godot","godot-engine","godot-utility","jpg2ans","png2ans","sysop","termcolors","textart","textmode"],"created_at":"2024-09-24T13:25:11.960Z","updated_at":"2026-02-14T04:08:00.792Z","avatar_url":"https://github.com/grymmjack.png","language":"GDScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# godot version of img2ans\n## TL;DR: [YouTube video](https://www.youtube.com/watch?v=sJiqoQ2E0M8) of QB64PE version - Godot version with GUI coming soon\n\nAfter struggling a bit with the [QB64PE](https://www.qb64phoenix.com/) GUI side of my project [img2ans](https://github.com/grymmjack/img2ans), I have decided to port the entire thing into godot to leverage the GUI tools available.\n\n\u003e Godot meets the goals I currently have.\n\n- I want cross-platform support. Godot has this; windows, linux, mac, android, ios.\n- [Godot has vscode integration](https://github.com/godotengine/godot-vscode-plugin) with debugging and supports LSP\n- I can hopefully learn how the LSP is implemented once I get more familiar with Godot and use that knowledge to improve the [QB64PE vscode extension ](https://github.com/grymmjack/qb64pe-vscode) I'm working on.\n- I am OK using gdscript (python-like language), and actually porting QB64PE into Godot was pretty straight forward. I'll make some videos about this process. So far it's a 1:1 simple thing to do.\n\nAnyway, let's see where we can go with this!\n\nWe are going to build this GUI in Godot img2ans:\nHere is the Godot WIP GUI:\n![image](https://github.com/user-attachments/assets/904fdd6f-c5c2-4a75-862a-8780f73e8318)\n\nHere is the original mockup:\n![image](https://github.com/user-attachments/assets/05da2bb5-939d-40bf-8394-bb82cd3bccb9)\n\nOr try to :)\n\nFor more information about this, \n\n------\n\n`IMG2ANS` converts pixels into textmode art using [ANSI codes](https://en.wikipedia.org/wiki/ANSI_escape_code).\n\n\u003e Why did I make this?\nThere are no native ANSI editors on iOS at ALL.\nThe use of a remote desktop/VNC while on iOS is possible but it's just horribly unergonomic.\nSo, I had an idea. What if I used pixel art, and the DOS EGA/CGA [16 color palette](https://16colo.rs/artist/grymmjack) to make the pixel art, and then somehow turn it into ANSI? Voila.\n\n#### Example Pixel Art created on iPad laying in bed because I'm old:\n![Alt text](resources/images/stormtrooper-pixel-art.png)\n\n#### Post conversion to ANSI (Left = after conversion | Right = after refining):\n![Alt text](resources/images/stromtrooper-conversion-example.png)\n\n#### Foodies pixel art\n![Alt text](resources/images/All-Foodies-ANSI32.png)\n\n#### Example of Foodies (RGB 8px) conversion\n![Alt text](resources/images/foodies-in-moebius.png)\n\n#### Close-up of how to refine with shading, etc:\n![Alt text](resources/images/foodies-refining-eggplant-why.png)\n\nNow you can use the [EGA/CGA Palette](https://en.wikipedia.org/wiki/Color_Graphics_Adapter) and any pixel art editor on your devices, then convert the pixel art into text mode, and finish and refine it in editors.\n\n`IMG2ANS` isn't the first of it's kind (GIF2ANS, etc. already exist), but I am proud of the quality of conversion. It can do a 1:1 conversion for RGB or 16 color EGA/CGA in both 8px font (80x50 mode), and 16px (80x25 mode). \n\nOne neat thing that this does is it actually uses the ANSI block characters intelligently. Being an ANSI artist I am very picky about how I draw, and wanted to make it so that this tool would generate really easy to draw-after kinds of ANSIs. \n\n#### `IMG2ANS` uses the following characters:\n- █ BLOCK CHARACTER - Full block foreground\n- ▀ *HALF BLOCK Top FG Bottom BG*\n- ▄ *HALF BLOCK Top BG Bottom FG*\n- {SPACE}\n\n*in 80x25 16px font mode only*\n\n\u003e So as an ANSI artist you can use stuff like `ALT-U` to pickup sensible colors, and it uses normal blocks, vs. just some weird machine-specific converter where everything is iCE colors even when it doesn't have to be, and the blocks don't make a lot of sense when you draw post conversion. Believe me it was a lot less easy to draw after conversion before! Everything used iCE colors and the background and foreground colors were all whacked and inverted. I fixed that.\n\nAlso since I know this will be helpful for BBS SysOps I have created a method which does not use iCE colors as much as possible. It will use a black where the iCE was required (if it can't compensate with lower intensity colors). \n\n![IMG2ANS GUI](resources/images/progress5.png)\n\n### Cross Platform Support:\n`IMG2ANS` is was originally written using [QB64-PE](https://github.com/QB64-Phoenix-Edition/QB64pe) and was a result is 100% cross platform compatible with:\n\n- Linux\n- OSX\n- Windows\n\n\u003e The Godot version will also be cross platform and support the same OSes.\n\n### Input Image Formats Supported:\n`IMG2ANS` supports any [Godot supported image formats](https://docs.godotengine.org/en/stable/tutorials/assets_pipeline/importing_images.html#supported-image-formats) which includes:\n- bmp\n- dds\n- ktx\n- exr\n- hdr\n- jpg\n- png\n- tga\n- svg\n- webp\n\n### Output Image Formats Supported:\n`IMG2ANS` will save text files according to the following output types (all of which will embed the font and width and height in the sauce record in addition to the standard sauce stuff like group, author, comments, etc. if it is enabled):\n- 16 color ANSI (8px and 16px fonts)\n- 24 Bit ANSI (8px and 16px fonts)\n\n### Until the Godot version GUI is done...\n\nSee the [README](https://github.com/grymmjack/img2ans) of the img2ans QB64PE project. You can use this now, but it's got no GUI. CLI only.\n\n## USAGE FOR GUI\n- Run the program\n- Browse for image files to convert\n- Optionally convert the source image colors to a palette\n- Optionally resize / crop the image\n- Enter sauce information (and optionally include it)\n- Choose Font Options\n- Choose Color Options\n- Decide where you want to save exported converted file\n- Click Export\n\n### NEW FEATURES COMING SOON (AS PART OF GUI):\n- Choose 9PX Width\n- Conversion Pipeline: Open -\u003e Palletize -\u003e Crop/Resize\n- Palettize can use any GPL palette and user palettes\n- Resize / Crop nudge with arrows, resize with SHIFT\n- Source Image: Brightness, Contrast, and Posterize in-line edits\n- Pannable image boxes, zoomable with mousewheel\n- Optional image format export using different export filename extensions\n- Palette colors preview for loaded palettes\n- Multiple Palette Support including user palettes in GPL format\n    - 1 BIT (2)\n    - CGA MODE 1 (4)\n    - CGA MODE 2 (4)\n    - CGA MODE 3 (4)\n    - CGA MODE 4 (4)\n    - EGA (16) [DEFAULT]\n    - VGA (256)\n    - Teletext (8)\n    - APPLE ][ (16)\n    - C=64 (16)\n    - BBC MICRO (16)\n    - ZX SPECTRUM (15)\n    - AMSTRAD CPC (26)\n    - ATARI 2600 NTSC (128)\n    - Intellivision (16)\n    - Fairchild Channel F (4)\n    - SECAM (8)\n    - Nintendo NES (54)\n    - Nintendo Gameboy (4)\n    - Nintendo SNES (256)\n    - SEGA Master System (64)\n    - PICO-8 (16)\n    - ANSI32 (32)\n    - CGA32 (32)\n- Configuration:\n    - Image Editor - used to edit the images in each phase of pipeline\n    - ANSI Editor - used to edit the end result ANSI\n    - User Palettes Directory\n    - User Favorite Directories\n\n### OPTimized\n\nThese new versions generate optimized and compressed ANSI files.\n\n### 8px Font (80x50 mode)\n\nThis is the closest you can get to 1:1 for pixel art conversion. The converted pixel is turned into a 8x8 square character, and intended to be viewed with an 8px font (sauce configuration saved).\n\n### 16px Font (80x25 mode)\n\nIn this mode, pixel art can be converted perfectly 1:1 but the versatility required by the 16x8px font helps so it uses full block, and half blocks to convert. It does it's best to minimize the requirement of iCE Colors.\n\n## iCE Colors (High Intensity BG no Blink)\n\nIn traditional text mode (SCREEN 0), high intensity background colors are not allowed and will instead cause the text to blink. In iCE Color mode, the blinking is disabled. In QB64 this is the same thing that happens when you use `_NOBLINK` in text screen modes.\n\n## RGB 24 Bit Color\n\nIf this is unchecked, the palette to be used will be the DOS CGA/EGA 16 color palette. \n\nIf this is checked, the palette is unrestricted and `CSI;r;g;bt` method of color change is used instead.\n\nIn RGB 24 bit, you can convert any pixel art to ANSI text mode 1:1 regardless of the source color palette.\n\nIf you are not using RGB 24 bit mode, the source image must use the DOS CGA/EGA 16 color palette, or colors will not map properly for conversion.\n\n\n### [SAUCE](https://github.com/grymmjack/sauce) Support\nSauce support includes:\n- Font size\n- iCE Colors ON/OFF\n- Canvas Width\n- Canvas Height\n- Author\n- Title\n- Group\n- Comments\n- Date\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrymmjack%2Fgodot-img2ans","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrymmjack%2Fgodot-img2ans","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrymmjack%2Fgodot-img2ans/lists"}