summaryrefslogtreecommitdiff
path: root/remarks/WR-011.txt
diff options
context:
space:
mode:
authornetop://ウィビ <paul@webb.page>2026-04-11 14:24:49 -0700
committernetop://ウィビ <paul@webb.page>2026-04-11 14:24:49 -0700
commit8c34d810af95fae0ef846f54370a8c88bfab7123 (patch)
tree436beaf30f7b2b3f15741dd54a37e313964d1f7d /remarks/WR-011.txt
initial commitHEADprimary
Diffstat (limited to 'remarks/WR-011.txt')
-rw-r--r--remarks/WR-011.txt54
1 files changed, 54 insertions, 0 deletions
diff --git a/remarks/WR-011.txt b/remarks/WR-011.txt
new file mode 100644
index 0000000..7c727b0
--- /dev/null
+++ b/remarks/WR-011.txt
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+Document: WR-011 P. Webb
+ 2025.03.27
+
+ Pixel-perfect ffmpeg gifs
+
+Body
+
+ I recently decided to take a page from elle's[1] book and create some
+ 88x31 banners for my homepage. I wanted them animated and to
+ incorporate Megaman Battle Network sprites. My initial ffmpeg
+ attempts were blurry af so I played around with arguments until I
+ figured out the winning incantations.
+
+ For the first[2] two[3] banners I used this incantation:
+
+ ```sh
+ ffmpeg -framerate 4 -pattern_type glob -i "*.png" -filter_complex "[0:v] split [a][b];[a] palettegen=reserve_transparent=on:transparency_color=ffffff [p];[b][p] paletteuse" pixel_art.gif
+ ```
+
+ There were only four frames so it made sense to my the FPS the same.
+ For the third[4] banner however, there were initially 44 frames of
+ the jack-in animation from MMBN6 but I removed some frames for a
+ better loop (36 frames in the end).
+
+ ```sh
+ ffmpeg -framerate 12 -pattern_type glob -i "*.png" -filter_complex "[0:v] split [a][b];[a] palettegen=reserve_transparent=on:transparency_color=ffffff [p];[b][p] paletteuse" pixel_art.gif
+ ```
+
+ To my eyes, an FPS of 12 looks good enough.
+
+ Now I gotta figure out where to put other peoples banners on
+ my homepage…
+
+ Oh fun fact, AVIF is terrible for pixel-perfect animations, GIF
+ remains king.
+
+ Thanks to Hank[5] I learned that putting
+ `image-rendering: pixelated;` on your pixel images via CSS make them
+ look crisp.
+
+References
+
+ [1] <https://ellesho.me/page>
+ [2] <https://webb.page/88x31/a.gif>
+ [3] <https://webb.page/88x31/b.gif>
+ [4] <https://webb.page/88x31/c.gif>
+ [5] <https://mastodon.design/@hank>