Skip to content

Compress the largest PNGs

Following up on discussion on the forum and in my comments in #2 (closed), this merge request compresses 26 of the 30 largest images in the repository using pngquant. I estimate that it saves 30-35mB of space in total.

All of the largest images turn out to be epilogue splash images (no surprises there).

I do not know if this is the best approach to this problem, but it might help in the very short term. Note that this leaves 26 large binary assets in the repo's history, but that is probably not a huge issue right now.

More technical details are below, for the interested reader.

Details

I generated a list of the largest PNG files in the opponents/ directory by running

$ find opponents -type f -ls | sort -k7 -r | head -n 30 | grep -o "opponents/.*.png" > largest_pngs.txt

I then manually edited this file so that the changes would come as a consistent set of patches to select epilogues and ran pngquant $(<largest_pngs.txt) to compress all of the files. This utility affixes -fs8 to the file names of each compressed file, so you can check the before/after file size with simple ls commands.

These are the before and after file sizes for Ryu's ending:

$ ls opponents/ryu/ending-* 
-rw-r--r--  1 user    596K Jun 19 22:17 opponents/ryu/ending-1-fs8.png
-rw-r--r--  1 user    1.6M Apr 19 23:08 opponents/ryu/ending-1.png
-rw-r--r--  1 user    589K Jun 19 22:17 opponents/ryu/ending-2-fs8.png
-rw-r--r--  1 user    1.5M Apr 19 23:08 opponents/ryu/ending-2.png
-rw-r--r--  1 user    577K Jun 19 22:17 opponents/ryu/ending-3-fs8.png
-rw-r--r--  1 user    1.5M Apr 19 23:08 opponents/ryu/ending-3.png
-rw-r--r--  1 user    552K Jun 19 22:17 opponents/ryu/ending-4-fs8.png
-rw-r--r--  1 user    1.4M Apr 19 23:08 opponents/ryu/ending-4.png
-rw-r--r--  1 user    447K Jun 19 22:17 opponents/ryu/ending-5-fs8.png
-rw-r--r--  1 user    1.1M Apr 19 23:08 opponents/ryu/ending-5.png

And for Asuna's ending:

$ ls opponents/asuna/true_sight_*.png
-rw-r--r--  1 user    431K Jun 19 22:17 opponents/asuna/true_sight_1-fs8.png
-rw-r--r--  1 user    1.3M Apr 19 23:08 opponents/asuna/true_sight_1.png
-rw-r--r--  1 user    415K Jun 19 22:17 opponents/asuna/true_sight_2-fs8.png
-rw-r--r--  1 user    1.4M Apr 19 23:08 opponents/asuna/true_sight_2.png
-rw-r--r--  1 user    409K Jun 19 22:17 opponents/asuna/true_sight_4-fs8.png
-rw-r--r--  1 user    1.3M Apr 19 23:08 opponents/asuna/true_sight_4.png

And for BlackRose's endings:

$ ls opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_*.png
-rw-r--r--  1 user    421K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_01-fs8.png
-rw-r--r--  1 user    1.3M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_01.png
-rw-r--r--  1 user    440K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_02-fs8.png
-rw-r--r--  1 user    1.3M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_02.png
-rw-r--r--  1 user    438K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_03-fs8.png
-rw-r--r--  1 user    1.3M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_03.png
-rw-r--r--  1 user    414K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_04-fs8.png
-rw-r--r--  1 user    1.2M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_04.png
-rw-r--r--  1 user    433K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_05-fs8.png
-rw-r--r--  1 user    1.3M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_05.png
-rw-r--r--  1 user    421K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_06-fs8.png
-rw-r--r--  1 user    1.3M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_06.png
-rw-r--r--  1 user    694K Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_07.png
-rw-r--r--  1 user    445K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_08-fs8.png
-rw-r--r--  1 user    1.3M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_08.png
-rw-r--r--  1 user    429K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_09-fs8.png
-rw-r--r--  1 user    1.3M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_09.png
-rw-r--r--  1 user    419K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_10-fs8.png
-rw-r--r--  1 user    1.2M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_10.png
-rw-r--r--  1 user    405K Jun 19 22:17 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_11-fs8.png
-rw-r--r--  1 user    1.2M Apr 19 23:08 opponents/blackrose/BlackRose_epilogue_Jay_Jaysie_11.png

And Streaming-chan's endings:

$ ls opponents/streaming-chan/epilogue-*.png
-rw-r--r--  1 user    7.5K Apr 19 23:08 opponents/streaming-chan/epilogue-0.png
-rw-r--r--  1 user    414K Jun 19 22:17 opponents/streaming-chan/epilogue-1-fs8.png
-rw-r--r--  1 user    1.4M Apr 19 23:08 opponents/streaming-chan/epilogue-1.png
-rw-r--r--  1 user    416K Jun 19 22:17 opponents/streaming-chan/epilogue-2-fs8.png
-rw-r--r--  1 user    1.4M Apr 19 23:08 opponents/streaming-chan/epilogue-2.png
-rw-r--r--  1 user    408K Jun 19 22:17 opponents/streaming-chan/epilogue-3-fs8.png
-rw-r--r--  1 user    1.4M Apr 19 23:08 opponents/streaming-chan/epilogue-3.png
-rw-r--r--  1 user    420K Jun 19 22:17 opponents/streaming-chan/epilogue-4-fs8.png
-rw-r--r--  1 user    1.4M Apr 19 23:08 opponents/streaming-chan/epilogue-4.png
-rw-r--r--  1 user    398K Jun 19 22:17 opponents/streaming-chan/epilogue-5-fs8.png
-rw-r--r--  1 user    1.5M Apr 19 23:08 opponents/streaming-chan/epilogue-5.png
-rw-r--r--  1 user    375K Jun 19 22:17 opponents/streaming-chan/epilogue-6-fs8.png
-rw-r--r--  1 user    1.2M Apr 19 23:08 opponents/streaming-chan/epilogue-6.png
-rw-r--r--  1 user    405K Jun 19 22:17 opponents/streaming-chan/epilogue-7-fs8.png
-rw-r--r--  1 user    1.5M Apr 19 23:08 opponents/streaming-chan/epilogue-7.png
-rw-r--r--  1 user    403K Jun 19 22:17 opponents/streaming-chan/epilogue-8-fs8.png
-rw-r--r--  1 user    1.5M Apr 19 23:08 opponents/streaming-chan/epilogue-8.png

A rough back-of-the-envelope calculation on this output leads me to estimate that this saves 30-35mB.

Merge request reports

Loading