Saya ingin membuat banyak gambar berdasarkan gambar sumber!
Jelas saya bisa melakukan ini dengan tangan di Adobe Photoshop ... dan ini akan membutuhkan waktu manual yang konyol.
Kamu sangat benar. Biarkan komputer melakukan pekerjaan berulang yang mudah; itulah yang mereka kuasai. Seperti yang dicatat oleh jawaban Tom Ruh , Anda dapat menggunakannya ImageMagick
untuk ini.
Namun, ada masalah:
Cukup beruntung gambar adalah resolusi 4: 3 dan akan bekerja dengan baik dengan semua resolusi dengan tinggi dan lebar yang sama, yaitu 80x80px 100x100px dll.
(penekanan milikku)
Tidak jelas resolusi apa yang Anda inginkan- 4: 3 seperti yang dinyatakan, atau 1: 1 sebagaimana tersirat.
Namun, berdasarkan pada persyaratan Anda minimum 73px dan maksimum 1000px dan hundered resolusi ; Saya telah menulis sebuah skrip kecil yang harus mencakup sebagian besar kemungkinan (termasuk mengubah ukuran cair jika Anda menginginkannya) yang dapat diatur dengan mengubah beberapa variabel.
Script, juga tersedia dari pastebin di sini untuk menyalin lebih mudah :
#!/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
Catatan: Sedikit over-the-top pada subkulit untuk menghitung nilai dan semacamnya, tapi hei ho. Seperti yang disebutkan, printf
baris - baris tersebut dapat di-uncommented untuk sebuah ide tentang apa yang sedang terjadi, jika tidak maka akan beroperasi secara diam-diam sesuai dengan Rule of Silence . Beberapa gambar tidak akan menjadi dimensi persis seperti yang dihitung (misalnya 193px vs 138.54545454545454545452px) karena Anda tidak dapat memiliki piksel fraksional yang bermanfaat.