From d937afc20886412a02b6f8997c04a1b2d7798d2b Mon Sep 17 00:00:00 2001 From: "Yann Esposito (Yogsototh)" Date: Thu, 30 Sep 2021 00:43:40 +0200 Subject: [PATCH] webp todo: fix gif --- Makefile | 5 +++-- engine/img-to-webp.lua | 9 +++++++++ engine/mk-html.sh | 6 ++++-- engine/optim-img.sh | 12 ++++++++++-- shell.nix | 1 + 5 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 engine/img-to-webp.lua diff --git a/Makefile b/Makefile index 9ecc847..10f5203 100644 --- a/Makefile +++ b/Makefile @@ -47,9 +47,10 @@ DST_PANDOC_FILES ?= $(patsubst %$(EXT),%.html, \ $(SRC_PANDOC_FILES))) PANDOC_TEMPLATE ?= templates/post.html PANDOC_LUA_FILTER ?= engine/links-to-html.lua +PANDOC_LUA_FILTER_IMG ?= engine/img-to-webp.lua MK_HTML := engine/mk-html.sh -PANDOC := $(MK_HTML) $(PANDOC_TEMPLATE) $(PANDOC_LUA_FILTER) -$(DST_DIR)/%.html: $(SRC_DIR)/%.org $(PANDOC_TEMPLATE) $(PANDOC_LUA_FILTER) $(MK_HTML) $(ENV_VARS) +PANDOC := $(MK_HTML) $(PANDOC_TEMPLATE) $(PANDOC_LUA_FILTER) $(PANDOC_LUA_FILTER_IMG) +$(DST_DIR)/%.html: $(SRC_DIR)/%.org $(PANDOC_TEMPLATE) $(PANDOC_LUA_FILTER) $(PANDOC_LUA_FILTER_IMG) $(MK_HTML) $(ENV_VARS) @mkdir -p "$(dir $@)" $(PANDOC) "$<" "$@.tmp" minify --mime text/html "$@.tmp" > "$@" diff --git a/engine/img-to-webp.lua b/engine/img-to-webp.lua new file mode 100644 index 0000000..85e997e --- /dev/null +++ b/engine/img-to-webp.lua @@ -0,0 +1,9 @@ +-- img-to-webp.lua +function Image(el) + local fileext = el.src:match("%.[^%.]+$"); + -- DEBUG -- print("LUA IMG: ", fileext); + if ( fileext == ".jpg" or fileext == ".png" or fileext == ".jpeg" ) then + el.src = el.src .. ".webp" + end + return el +end diff --git a/engine/mk-html.sh b/engine/mk-html.sh index 5fbce41..c2aae09 100755 --- a/engine/mk-html.sh +++ b/engine/mk-html.sh @@ -4,8 +4,9 @@ set -eu cd "$(git rev-parse --show-toplevel)" || exit 1 template="$1" luafilter="$2" -orgfile="$3" -htmlfile="$4" +luafilterimg="$3" +orgfile="$4" +htmlfile="$5" tocoption="" if grep -ie '^#+options:' "$orgfile" | grep 'toc:t'>/dev/null; then @@ -16,6 +17,7 @@ set -x pandoc $tocoption \ --template="$template" \ --lua-filter="$luafilter" \ + --lua-filter="$luafilterimg" \ --mathml \ --from org \ --to html5 \ diff --git a/engine/optim-img.sh b/engine/optim-img.sh index 6038304..62b4eb3 100755 --- a/engine/optim-img.sh +++ b/engine/optim-img.sh @@ -7,10 +7,18 @@ sizeof() { stat --format="%s" "$*" } -convert "$src" -resize 800x800\> -quality 50 "$dst" + +convert "$src" -resize 800x800\> "$dst" before=$(sizeof $src) -after=$(sizeof $dst) + +if [[ "${src:e}" == "gif" ]]; then + after=$(sizeof $dst) +else + cwebp "$dst" -quiet -o "$dst.webp" + after=$(sizeof $dst.webp) +fi + if (( before <= after )); then cp -f "$src" "$dst" diff --git a/shell.nix b/shell.nix index ffea5d8..0c3553e 100644 --- a/shell.nix +++ b/shell.nix @@ -24,6 +24,7 @@ pkgs.mkShell { direnv ghc tmux + libwebp # for emacs dev ripgrep nodePackages.http-server