From 1c175bc588f023009acf44ae0d9d167195c4d01d Mon Sep 17 00:00:00 2001 From: Mishieck Date: Thu, 20 Mar 2025 05:32:09 +0200 Subject: [PATCH 1/2] feat(snippets/bash): add media/ffmpeg-image-processor --- snippets/bash/media/ffmpeg-image-processor.md | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 snippets/bash/media/ffmpeg-image-processor.md diff --git a/snippets/bash/media/ffmpeg-image-processor.md b/snippets/bash/media/ffmpeg-image-processor.md new file mode 100644 index 00000000..4ed6fa03 --- /dev/null +++ b/snippets/bash/media/ffmpeg-image-processor.md @@ -0,0 +1,30 @@ +--- +title: FFmpeg Image Processor +description: Process multiple images at once using FFmpeg. +author: mishieck +tags: ffmpeg,image-processing +--- + +```bash +#!/bin/bash + +filenamePattern='(.+)\.[a-zA-Z]+$' +filenames="$1" # NOTE: Quoted list or glob +outputExtension=$2 # PNG, JPEG, WEBP, etc +options=$3 # ffmpeg options + +for filename in $filenames; do + if [[ $filename =~ $filenamePattern ]]; then + inputName=${BASH_REMATCH[1]} + outputFilename="$inputName.$outputExtension" + ffmpeg -i $filename $options $outputFilename + fi +done + +# Usage: +chmod +x ./ffmpeg-image-processor.bash # Make the file executable +./ffmpeg-image-processor.bash 'image-1.png image-2.png' webp # Outputs: image-1.webp image-2.webp + +# Given a folder with 'image-1.png image2.png' +./ffmpeg-image-processor.bash './*.png' webp '-compression_level 60' # Outputs: image-1.webp image-2.webp, with 60% compression +``` From 709e69fab3b82e355843f6c8c174795a8533998e Mon Sep 17 00:00:00 2001 From: Mishieck Date: Sat, 22 Mar 2025 22:50:04 +0200 Subject: [PATCH 2/2] feat(snippets/bash/media): put code in function in ffmpeg-image-processor --- snippets/bash/media/ffmpeg-image-processor.md | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/snippets/bash/media/ffmpeg-image-processor.md b/snippets/bash/media/ffmpeg-image-processor.md index 4ed6fa03..87ebfedc 100644 --- a/snippets/bash/media/ffmpeg-image-processor.md +++ b/snippets/bash/media/ffmpeg-image-processor.md @@ -8,18 +8,22 @@ tags: ffmpeg,image-processing ```bash #!/bin/bash -filenamePattern='(.+)\.[a-zA-Z]+$' -filenames="$1" # NOTE: Quoted list or glob -outputExtension=$2 # PNG, JPEG, WEBP, etc -options=$3 # ffmpeg options +process_images() { + filenamePattern='(.+)\.[a-zA-Z]+$' + filenames="$1" # NOTE: Quoted list or glob + outputExtension=$2 # PNG, JPEG, WEBP, etc + options=$3 # ffmpeg options -for filename in $filenames; do - if [[ $filename =~ $filenamePattern ]]; then - inputName=${BASH_REMATCH[1]} - outputFilename="$inputName.$outputExtension" - ffmpeg -i $filename $options $outputFilename - fi -done + for filename in $filenames; do + if [[ $filename =~ $filenamePattern ]]; then + inputName=${BASH_REMATCH[1]} + outputFilename="$inputName.$outputExtension" + ffmpeg -i $filename $options $outputFilename + fi + done +} + +process_images "$@" # Usage: chmod +x ./ffmpeg-image-processor.bash # Make the file executable