Ich möchte viele Bilder basierend auf einem Quellbild machen!
Natürlich könnte ich dies in Adobe Photoshop von Hand tun ... und dies würde eine dumme Menge an manueller Zeit in Anspruch nehmen.
Du hast ja so recht. Lassen Sie den Computer die einfache Wiederholungsarbeit erledigen. Darin sind sie gut. Wie die Antwort von Tom Ruh vermerkt , können Sie ImageMagick
dies verwenden.
Es gibt jedoch ein Problem:
Glücklicherweise hat das Bild eine Auflösung von 4: 3 und funktioniert gut mit allen Auflösungen mit der gleichen Höhe und Breite, dh 80x80px 100x100px usw.
(Hervorhebung von mir)
Es ist nicht klar, welche Auflösung Sie möchten - 4: 3 wie angegeben oder 1: 1 wie impliziert.
Basierend auf Ihren Anforderungen von mindestens 73px und maximal 1000px und Hunderten von Auflösungen ; Ich habe ein kleines Skript geschrieben, das die meisten Möglichkeiten abdecken sollte (einschließlich der Größenänderung von Flüssigkeiten, wenn Sie dies nicht möchten), das durch Ändern einiger Variablen festgelegt werden kann.
Skript, hier auch über Pastebin erhältlich, um das Kopieren zu vereinfachen :
#!/bin/bash
# resizer.sh - resize target image between two resolutions
# accepts file as either first argument or by setting FILEPATH variable
# SETTINGS
SMALLEST_WIDTH=73 # px
LARGEST_WIDTH=1000 # px
FILEPATH= # set if you don't want to pass in image as argument
NUM_OF_RESOLUTIONS=100 # number of images generated; will generate between
# $SMALLEST_WIDTH and $LARGEST_WIDTH
RATIO= # set if you want to specify width/height
# (eg 1/1, 4/3, 16/9), blank is preserve current ratio
# NOTE: resizing to other aspect ratios may be slow/distorty:
# as per http://www.imagemagick.org/Usage/resize/#noaspect
# Seamless resizing (default) may be preferred, see:
# http://www.imagemagick.org/Usage/resize/#liquid-rescale
# but note it is slower, particularly as images get larger
LIQUID=0
# SCRIPT BELOW
# silent by default; uncomment "printf" lines for a description of what is happening
die() { printf "$@\n" 1>&2 ; exit 1; }
if [ -z "$FILEPATH" ]; then
if [ -z "$1" ]; then die "Need to supply file to work on either as argument or by setting FILEPATH!";
else FILE="$1";
fi
else
FILE="$FILEPATH"
fi
# check file exists and is regular file
if [ ! -e "$FILE" ]; then die "$FILE does not exist!"; fi
if [ ! -f "$FILE" ]; then die "$FILE is not a regular file!"; fi
i=0
step=$(echo "($LARGEST_WIDTH - $SMALLEST_WIDTH) / ($NUM_OF_RESOLUTIONS - 1)" | bc -l)
#printf "Resolution step is: %s\n-------------" "$step"
while [ $i -lt $NUM_OF_RESOLUTIONS ]; do
# handle ratio
WIDTH=$(echo "$SMALLEST_WIDTH+($step*$i)" | bc -l)
if [ -z "$RATIO" ]; then
#printf "convert %s -resize %s %s\n" "$FILE" "$WIDTH" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
convert "$FILE" -resize "$WIDTH" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
else
HEIGHT=$(echo "$WIDTH * $RATIO" | bc -l)
if [ "$LIQUID" -eq 0 ]; then
# Uncomment convert line for distorted ("squashed") resizing
#printf "convert %s -resize %sx%s\! %s\n" "$FILE" "$WIDTH" "$HEIGHT" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
convert "$FILE" -resize "$WIDTH"x"$HEIGHT"\! "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
else
# Liquid resizing: http://www.imagemagick.org/Usage/resize/#liquid-rescale
# fast aspect ration resize first, then liquid
#printf "convert %s -resize %s %s\n" "$FILE" "$WIDTH" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
convert "$FILE" -resize "$WIDTH" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
#printf "%s details are now:\n %s\n" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}" "$(identify "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}")"
#printf "convert %s -liquid-rescale %sx%s\! %s\n" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}" "$WIDTH" "$HEIGHT" "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
convert "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}" -liquid-rescale "$WIDTH"x"$HEIGHT"\! "${FILE%.*}-${WIDTH%.*}px.${FILE##*.}"
fi
fi
(( i++ ))
done
Anmerkungen: Etwas übertrieben bei Unterschalen zur Berechnung von Werten und dergleichen, aber hey ho. Wie bereits erwähnt, können die printf
Zeilen für eine Vorstellung davon, was vor sich geht, unkommentiert werden. Andernfalls wird standardmäßig gemäß der Stille-Regel stumm gearbeitet . Einige Bilder haben nicht genau die berechneten Abmessungen (z. B. 193 Pixel gegenüber 138,54545454545454545452 Pixel), da Sie in nützlicher Weise keine gebrochenen Pixel haben können.