[RU] Массово/"пакетно" преобразовать изображения в *.bmp с палитрою в 256 цветов специально под Half-Life.

Автор: arbtttrn6

Используется ImageMagick. Можно создать сценарий, который будет содержать следующую команду:

#!/bin/bash #arbtttrn6 2025 input_files=(*.jpg) output_dir="./bmpoj" mkdir -p "$output_dir" round_to_power() { local num=$1 local candidates=(16 32 64 128 256) local nearest=${candidates[0]} local min_diff=$(( num - ${candidates[0]} )) min_diff=${min_diff#-} for c in "${candidates[@]}"; do diff=$(( num - c )) diff=${diff#-} if [ $diff -lt $min_diff ]; then min_diff=$diff nearest=$c fi done echo "$nearest" } for file in "${input_files[@]}"; do width=$(identify -format "%w" "$file") height=$(identify -format "%h" "$file") ratio=$(echo "scale=2; $width / $height" | bc) if (( $(echo "$ratio >= 1" | bc -l) )); then new_width=256 new_height=$(echo "scale=2; 256 / $ratio" | bc) else new_height=256 new_width=$(echo "scale=2; 256 * $ratio" | bc) fi new_width_int=$(LC_NUMERIC=C printf "%.0f" "$new_width") new_height_int=$(LC_NUMERIC=C printf "%.0f" "$new_height") target_width=$(round_to_power $new_width_int) target_height=$(round_to_power $new_height_int) convert "$file" \ -resize "${target_width}x${target_height}!" \ -compress none \ -format bmp \ -define bmp:format=bmp3 \ -colors 256 \ "${output_dir}/${file%.jpg}.bmp" done


Здесь результат будет отправляться в папку "bmpoj" (-path ./bmpoj), размер изображений будет устанавливаться в зависимости от соотношения сторон, сжатия нет (-compress none), формат bmp (-format bmp -define bmp:format=bmp3), цветов 256 (-colors 256), а в качестве входных изображений идут изображения формата jpg ("*.jpg").

Ссылки

Заметки, размещённые непосредственно на этом сайте.


Главная