소스 이미지를 기반으로 많은 이미지를 만들고 싶습니다!
분명히 Adobe Photoshop에서 직접 수작업을 수행 할 수 있습니다.이 작업에는 시간이 많이 걸리지 않습니다.
당신이 정말 맞습니다. 컴퓨터가 쉬운 반복 작업을하도록하십시오. 그것이 그들이 잘하는 것입니다. 으로 톰 RUH의 대답 노트 , 당신은 사용할 수 있습니다 ImageMagick
이것을.
그러나 문제가 있습니다.
운 좋게도 이미지는 4 : 3 해상도이며 높이와 너비가 같은 모든 해상도, 즉 80x80px 100x100px 등에서 잘 작동합니다 .
(강조 광산)
설명 된대로 4 : 3 또는 묵시적으로 1 : 1 어떤 해상도를 원하는지는 명확하지 않습니다.
그러나 최소 73px 및 최대 1000px 의 요구 사항 과 해상도의 장애를 기반으로합니다 . 변수를 변경하여 설정할 수있는 대부분의 가능성 ( 원하는 오프 기회에 대한 액체 크기 조정 포함)을 다루는 작은 스크립트를 작성했습니다 .
쉽게 복사 할 수 있도록 스크립트 를 pastebin에서 사용할 수도 있습니다 .
#!/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
참고 사항 : 값 등을 계산하기 위해 서브 쉘에서 약간 위에 있지만, 이봐. 언급 한 바와 같이, printf
라인, 그렇지 않으면 그것은에 따라 기본적으로 자동으로 작동합니다, 무슨 일이 일어나고 있는지의 아이디어에 대한 주석이 될 수 침묵의 규칙 . 유용한 방법으로 분수 픽셀을 가질 수 없기 때문에 일부 이미지의 크기는 계산 된 그대로 정확하게 측정되지 않습니다 (예 : 193px vs 138.54545454545454545452px).