edit: get the script for yourself here https://codeberg.org/CritBase111/Comicify
Someone sent me the comic you see attached to the post, and I thought, hey, that seems like something you could automate. Put 4 images in a folder, run a script, and it automatically lays them out in a 2x2 grid.
With Crush and deepseek it basically writes itself. I'm actually kinda surprised at how well it's doing. There was just one bug that I sent to Claude to fix.
I'm putting the examples in an imgur link because they're still quite heavy on disk space and I don't want to overwhelm the server: https://imgur.com/a/bTiHV4b (yes the pictures make it kinda hard to understand but I'll try to make a real comic with it eventually)
It's difficult to get other people hyped about a work in progress lol but hopefully this makes sense.
It's a python script and this is how you'd run it:
options:
-h, --help show this help message and exit
--folder FOLDER Path to folder containing comic panels
--panels {1,2,3,4} Number of panels to arrange (1-4). Not required when using --all
--gutter GUTTER Gutter size between panels in pixels (default: 15)
--border BORDER Border size around panels in pixels (default: 0)
--border-color BORDER_COLOR
Border color (CSS color name or hex code, default: black)
--gutter-color GUTTER_COLOR
Background/gutter color (CSS color name, hex code, or "transparent"|"none", default: white)
--margin MARGIN Margin multiplier relative to gutter size (default: 2.0, meaning 2x gutter)
--layout {horizontal,vertical,h,v}
Layout direction for 2 and 3-panel comics (default: horizontal). Use "h" or "v" as shorthand.
For 4-panel, use "h" or "v" for linear layouts, omit for 2x2 grid.
--all Generate all possible combinations (1, 2, 3, 4 panels with all layouts)
Examples:
python Comicify.py --folder "Comics/My first comic" --panels 4
python Comicify.py --folder "Comics/My first comic" --panels 4 --gutter 20
python Comicify.py --folder "Comics/My first comic" --panels 4 --layout h
python Comicify.py --folder "Comics/My first comic" --panels 2 --layout v
python Comicify.py --folder "Comics/My first comic" --all
python Comicify.py --folder "Comics/My first comic" --panels 3 --gutter-color none
If this doesn't speak to you basically you would download the .py file, and run one of the examples above. The --all flag makes all possible outputs (1, 2, 3 or 4 panel in all layouts). I also plan on adding "--reverse" to handle right-to-left order. you can see the examples in the imgur link, I included the sample code for some of them.
Deepseek wrote all of this, and it only costs like... a dollar or so. It's not the best at coding but it's so, so cheap that I fear I may spend all my savings on it lol. I didn't write a single line of code, just told it what I wanted (with more or less details) and it got it right on the first try. Now I'm just adding new functionalities to it.
I think one HUGE thing with LLM coding is it can go beyond what you know, so even if you can code it can do things you wouldn't necessarily do or know about.
I think this has uses for agitprop, if you want to make quick memes in a comic format for online or offline use. This is just one part of potentially a much bigger pipeline - I was thinking of having a simple gui afterwards you can send the output to, where you can add speech bubble stickers and write into them too, or like for one panel comics just write under it. Also with LLMs you can easily transpose this code to use javascript instead, or whatever else you want.
Oh if you send me a few pictures to comicify I can run them and show you the results. Script will not be available for download until it's fully ready.
Sounds like something you should use imagemagick's
montagefor: https://imagemagick.org/script/montage.phpJust have to figure out the right flags to make it look like a 4-panel comic.
You could, but it's a bit overkill for what we want it to do and doesn't seem like it has quite the same functionalities for what we'd want this for (notably I couldn't find a margin parameter on imagemagick, but it does do a bunch of cool stuff).
An example case:
With the --all flag you can get all possible permutations (horizontal, vertical, grid, and for each # of panels) generated. With --margin you can have 'bleed' or margin around the picture, though you'd have to take it to another image processing program afterwards to add text (in one panel comics the text is usually added at the bottom)
Getting this image for example is as simple as:
python Comicify.py --folder "Comics/My first comic" --panels 4 --border 6 --margin 3 --gutter 30 --h --gutter-color pink --border-color #333333Or just a 4 panel grid with --folder and --background-color specified, everything else left to default values:
Since it's a .py script it's also possible for people to further edit it and include it in more involved workflows for example automatically opening a GUI to make quick edits (such as speech bubbles or a caption). That's about what I have so far and I should probably take a break lol but there's a lot more stuff I could add to it to streamline the work even more. Instant memes and newspaper comic styles for agitprop.
edit: imagemagick needs to get on webp! It has been pretty universally adopted by now and I just tested an output: .png -> 1602KB while webp -> 194KB with no noticeable difference in quality.
There isn't a wrong way to do this. But magick montage can do all that except for the permutation thing which you'd have to script in another language like bash or python. My point was that imagemagick is a mature and battle tested software. It's worth learning if you find yourself working with images often. I'd rather ask the LLM to figure out the right flags to use it (because it's truly unintuitive) rather than to punch out a script. But as I said there isn't really a wrong way to go about this.