Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
wesleey committed Jun 20, 2024
0 parents commit 6306fca
Show file tree
Hide file tree
Showing 59 changed files with 169 additions and 0 deletions.
37 changes: 37 additions & 0 deletions .github/workflows/optimize-and-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Optimize and Deploy

on:
push:
branches:
- main

jobs:
optimize:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y webp librsvg2-bin
- name: Optimization
run: |
./optimize.sh -h 600 -q 100 -o out
- name: Deploy
run: |
sudo chown -R $(whoami):$(whoami) .
git config --global user.email "[email protected]"
git config --global user.name "$GITHUB_ACTOR"
cp -r out/* /tmp
cd /tmp
git init
git branch -M gh-pages
git add .
git commit -m "Optimize images"
git remote add origin "https://$GITHUB_ACTOR:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY"
git push -f origin gh-pages
132 changes: 132 additions & 0 deletions optimize.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
#!/bin/bash

TEMP_DIR=temp
INPUT_DIR=src
OUTPUT_DIR=out

WIDTH=0
HEIGHT=300
IMAGE_QUALITY=100

while getopts ":o:w:h:q:" opt; do
case ${opt} in
o )
OUTPUT_DIR=$OPTARG
;;
w )
WIDTH=$OPTARG
;;
h )
HEIGHT=$OPTARG
;;
q )
IMAGE_QUALITY=$OPTARG
;;
\? )
echo "Usage: ./optimize.sh [-o output_dir] [-w width] [-h height] [-q image_quality]"
exit 1
;;
esac
done

rm -rf "$TEMP_DIR"
mkdir -p "$OUTPUT_DIR"

mkdir "$TEMP_DIR"
cp -r "$INPUT_DIR"/* "$TEMP_DIR"

optimize_image() {
local input_file="$1"
local output_file="$2"
cwebp -q "$IMAGE_QUALITY" -m 6 -sharpness 0 -noalpha -resize "$WIDTH" "$HEIGHT" -quiet "$input_file" -o "$output_file"
}

convert_svg_to_webp() {
local input_file="$1"
local output_file="$2"
local temp_png="${output_file}.png"
rsvg-convert -o "$temp_png" "$input_file"
optimize_image "$temp_png" "$output_file"
rm "$temp_png"
}

optimize_webp() {
local input_file="$1"
local output_file="$2"
local temp_output="${output_file}.temp"

if webpmux -info "$input_file" 2>&1 | grep -q "No. of frames: 1"; then
optimize_image "$input_file" "$temp_output"
else
gif2webp -q "$IMAGE_QUALITY" "$input_file" -o "$temp_output"
fi

local original_size=$(stat -c %s "$input_file")
local new_size=$(stat -c %s "$temp_output")

if (( new_size < original_size )); then
mv "$temp_output" "$output_file"
echo "Optimized: $input_file -> $output_file (reduced size from $original_size to $new_size)"
else
rm "$temp_output"
cp "$input_file" "$output_file"
echo "Copied without change: $input_file -> $output_file"
fi
}

file_exists_in_output() {
local input_file="$1"
local filename=$(basename "$input_file")
[ -f "$OUTPUT_DIR/$filename" ]
}

process_images() {
for img in "$TEMP_DIR"/*.{jpg,jpeg,png}; do
[ -f "$img" ] || continue
filename=$(basename "$img" .${img##*.})
output_file="$OUTPUT_DIR/$filename.webp"
if ! file_exists_in_output "$output_file"; then
optimize_image "$img" "$output_file"
echo "Converted: $img -> $output_file"
fi
done
}

process_svgs() {
for svg in "$TEMP_DIR"/*.svg; do
[ -f "$svg" ] || continue
filename=$(basename "$svg" .svg)
output_file="$OUTPUT_DIR/$filename.webp"
if ! file_exists_in_output "$output_file"; then
convert_svg_to_webp "$svg" "$output_file"
echo "Converted: $svg -> $output_file"
fi
done
}

process_webps() {
for webp in "$TEMP_DIR"/*.webp; do
[ -f "$webp" ] || continue
filename=$(basename "$webp" .webp)
output_file="$OUTPUT_DIR/$filename.webp"
if ! file_exists_in_output "$output_file"; then
optimize_webp "$webp" "$output_file"
fi
done
}

process_images
process_svgs
process_webps

find "$TEMP_DIR" -type f ! -name '*.jpg' ! -name '*.jpeg' ! -name '*.png' ! -name '*.svg' -exec cp -v {} "$OUTPUT_DIR/" \;

files_count=$(find "$INPUT_DIR" -type f | wc -l)
echo "$files_count files in $INPUT_DIR"

total=$(find "$OUTPUT_DIR" -type f | wc -l)
echo "Total: $total files in $OUTPUT_DIR"

rm -rf "$TEMP_DIR"

echo "Optimization completed."
Binary file added src/21.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/24k_magic.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/after_hours.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/am.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/baby.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/beauty_behind_the_madness.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/before_you_go.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/billionaire.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/blinding_lights.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/cant_feel_my_face.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/careless_whisper.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/creepin.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/divide.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/dont_matter.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/doo_wops_hooligans.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/easy_on_me.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/favourite_worst_nightmare.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/finesse.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/grenade.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/heartless.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/hello.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/heroes_tonight.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/hopes_and_fears.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/i_feel_it_coming.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/in_your_eyes.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/it_will_rain.jpeg
Binary file added src/locked_out_of_heaven.jpeg
Binary file added src/lonely.jpeg
Binary file added src/marshmello.webp
Binary file not shown.
Binary file added src/my_dear_melancholy.jpeg
Binary file added src/never_gonna_give_you_up.jpg
Binary file added src/nothin_on_you.jpeg
Binary file added src/on_&_on.jpeg
Binary file added src/out_of_time.jpeg
Binary file added src/peaches.jpeg
Binary file added src/rolling_in_the deep.jpeg
Binary file added src/rolling_in_the_deep.jpeg
Binary file added src/save_your_tears.jpeg
Binary file added src/shape_of_you.jpeg
Binary file added src/shine.jpeg
Binary file added src/silk_sonic.jpeg
Binary file added src/skyfall.jpeg
Binary file added src/someone_like_you.jpeg
Binary file added src/someone_you_loved.jpeg
Binary file added src/sorry.jpeg
Binary file added src/starboy.jpeg
Binary file added src/stay.jpeg
Binary file added src/sweater_weather.jpeg
Binary file added src/symbolism.jpeg
Binary file added src/thats_what_i_like.jpg
Binary file added src/the_lazy_song.jpeg
Binary file added src/treasure.jpeg
Binary file added src/uptown_funk.jpeg
Binary file added src/versace_on_the_floor.jpeg
Binary file added src/what_do_you_mean.jpeg
Binary file added src/x.jpeg
Binary file added src/yummy.jpeg

0 comments on commit 6306fca

Please sign in to comment.