From time to time I need to stitch together two or three images into a horizontal or vertical image. It seems so wasteful to spin up a whole design document for that task. What I wanted was a CLI that does that for me and I found one that does the job: Stitchy.
How to use Stitchy
Stitchy is a Rust package that does what it says on the tin, it stitches images together.
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Install Stitchy
cargo install stitchy
Use Stitchy
stitchy 4
stitchy 4 --order=alphabetical
By default Stitchy grabs the n
latest images in the directory, but you can set the --order
flag to alphabetical
. I typically put them in a temporary stitch/
directory on my Desktop to stitch images up.
Stitchy for responsive images
By default Stitchy will assemble the images in order in a tight grid. Where Stitchy shines is generating responsive images where you might show a grid of images on mobile and a horizontal filmstrip on desktop.
stitchy 4 # layout images in a grid
stitchy 4 -h # layout images horizontally
Here’s an example of a responsive image treatment I did on a recent Vibe Check.
If you resize your browser to a smaller viewport, you can see how the wide but short image loses hierarchy and readability on mobile, so I used stitchy
to cut a new version for desktop.
No one noticed I did this, no one said “thanks”, but these types of small touches are my favorite responsive techniques.
Other things Stitchy can do
Stitchy gives you a bit more control in setting a --maxw
or --maxh
if that’s part of the effect. You can also set the output format to --jpg
or --png
if needed as well as control the --quality
.
stitchy 4 --png
stitchy 4 --jpg --quality=75
Enjoy Stitchy
And that’s Stitchy! It’s pretty handy if you ask me.
I wrote this post because I use it so infrequently and there’s not much documentation beyond the --help
command, so I wanted to have this to remember how to use it.
Edit: A previous version of this post said you could do stitchy image1.png image2.png
but that was a mistake. Thanks to jwithy for pointing that out.