#!/bin/bash
# usage:
#   geojpgsplit mapname.jpg sizex sizey quality
#
# split JPG with jgw World File into tiles of size (sizex,sizey) approx.
# adjusted to even number of tiles
# JPEG quality 1..100 (typ. 75, better compression 40)

if [ $# -ne 4 ]; then
  echo 'Syntax: geojpgsplit mapname.jpg sizex sizey quality'
  exit
fi

hash gdal_translate

image=$1
base=${image%.*}

sizex=$2
sizey=$3

options=

quality=$4

# get image size
imagesizex=`gdalinfo "$image" | grep "^Size is " | sed "s/Size is \(.*\), \(.*\)/\1/g"`
imagesizey=`gdalinfo "$image" | grep "^Size is " | sed "s/Size is \(.*\), \(.*\)/\2/g"`

# calculator: bc

# Anzahl der Kacheln x,y (gerundet)
nx=$[$imagesizex / $sizex]
ny=$[$imagesizey / $sizey]

# Kachelgre (aufgeteilt fr ganzzahlige Kachelzahlen)
dx=$[$imagesizex / $nx]
dy=$[$imagesizey / $ny]

# main loop

# c-like for syntax
for ((x=0, ix=0; ix < nx ; ix++, x+=dx)) do
  for ((y=0, iy=0; iy < ny ; iy++, y+=dy)) do
	gdal_translate -of JPEG -co "WORLDFILE=YES" -co "QUALITY=$quality" $options -srcwin $x $y $dx $dy "$image" "$base-$ix-$iy.jpg"
  done
done
