summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/posts/making-a-nice-gif/index.org66
1 files changed, 66 insertions, 0 deletions
diff --git a/content/posts/making-a-nice-gif/index.org b/content/posts/making-a-nice-gif/index.org
new file mode 100644
index 0000000..e54b807
--- /dev/null
+++ b/content/posts/making-a-nice-gif/index.org
@@ -0,0 +1,66 @@
+#+TITLE: Making a Nice GIF
+#+DATE: 2021-10-23T19:23:14-04:00
+#+DRAFT: true
+#+DESCRIPTION:
+#+TAGS[]:
+#+KEYWORDS[]:
+#+SLUG:
+#+SUMMARY:
+
+I just spent a good couple hours trying to figure out how to create
+a high quality gif with transparency using a video and an image as
+source material.
+
+I ended up finding a process that turned out wonderfully and ended
+up creating a beautiful and small gif.
+
+I'm combining images to create a header image for my bsd auth post
+and I thought it would be fun to have a cutout of Puffy with
+spinning gears inside.
+
+Initially I went through several tries using different software
+like =ffmpeg=, =shotcut=, and =obs=, to name a few.
+
+This is the process that I ended up with that worked for me.
+
+First I created the image I wanted for the overlay in GIMP. I then
+got the gif of the spinning gears from google images. I opened the
+gif up in Kdenlive and used the colorize filter to get them all
+yellow so it would fit in with the puffer fish theme.
+
+Then I imported the overlay image (Puffy with the cutout) and
+placed it on top. I then rearranged and transformed things until it
+was how I wanted.
+
+From there I went to render the video in Kdenlive, and used the
+=Video with Alpha > Alpha MOV= preset. I tried using the =webm=
+presets but =ffmpeg= seems to be more picky about that, plus this
+=mov= is lossless so it's better anyways.
+
+I then took that video and split it up into frames using =ffmpeg=.
+
+#+begin_src sh
+mkdir movframes
+ffmpeg -i bsd\ auth.mov movframes/auth%03d.png
+#+end_src
+
+I then opened the first frame in GIMP. From there I opened the
+remaining frames as layers through =File > Open as Layers=, and
+selected the remaining frames using shift click.
+
+I then exported them as a =gif=, making sure to check =animated= in
+the export menu, and set the time delay between frames.
+
+The =gif= that's exported from GIMP is alright, but it's not very
+optimized and the timing seems to not work correctly all the time
+for some reason.
+
+To fix this I used =gifsicle= to both optimize the gif and set the
+framerate correctly.
+
+#+begin_src sh
+gifsicle -d 4 -O3 -o output.gif input.gif
+#+end_src
+
+After all that I finally had a great looking, small, and fast gif
+with transparency.