Zond의 답변을 기반으로 스크립트를 만들었습니다. 사용자 입력 매개 변수에 따라 이미지 파일을 바둑판 식으로 배열합니다. 스크립트는 다음과 같습니다.
# Usage:
#
# sh crop.sh <tileset_image_file> <tileset_image_width> <tileset_image_height> <tile_size_X> <tile_size_y>
#
# Example:
# sh crop.sh tileset01.png 128 192 32 32
#
# - Will generate 24 tiles of 32x32 named tile1.png, tile2.png, ..., tile24.png
#
# Your tileset file. I've tested with a png file.
origin=$1
# Control variable. Used to name each tile.
counter=0
# Location of the tool that we are using to extract the files. I had to create a shortcut of the tool in the same folder as the script.
program=convert.exe
# The size of the tile (32x32)
tile_size_x=$4
tile_size_y=$5
# Number of rows (horizontal) in the tileset.
rows=$2
let rows/=tile_size_x
# Number of columns (vertical) in the tileset.
columns=$3
let columns/=tile_size_y
# Tile name prefix.
prefix=tile
# Tile name sufix.
sufix=.png
echo Extracting $((rows * $columns)) tiles...
for i in $(seq 0 $((columns - 1))); do
for j in $(seq 0 $((rows - 1))); do
# Calculate next cut offset.
offset_y=$((i * tile_size_y))
offset_x=$((j * tile_size_x))
# Update naming variable.
counter=$((counter + 1))
tile_name=$prefix$counter$sufix
echo $program -extract $tile_size"x"$tile_size"+"$offset_x"+"$offset_y $origin $tile_name
$program -extract $tile_size_x"x"$tile_size_y"+"$offset_x"+"$offset_y $origin $tile_name
done
done
echo Done!
이 스크립트는 ImageMagick의 "sh"및 "convert"도구와 함께 작동합니다. Windows cmd가 기본 방식으로 sh를 제공하는지 확실하지 않습니다.이 경우 sh가 작동하도록 이 주제 를 살펴볼 수 있습니다 . 또한 ImageMagick을 시스템에 설치하고 스크립트를 실행할 폴더에 변환 도구의 바로 가기를 설치해야합니다.
- 나는 png 이미지로만 테스트했습니다. 도움이 되길 바랍니다.