This code originally was posted by user Vinylon on AccusedFarms (http://accursedfarms.com/forums/viewtopic.php?f=63&t=8128)
His link:
His code:
import Image
import os.path
fpx = 64
# max +/- Y coordinate
fy = 40
# max +/- X coordinate
fx = 90
# ~max number of maps.
mn = 60
hasmaps = False
for n in range(0, mn):
hasmaps = False
new_im = Image.new('RGB', (fpx*fx*2, fpx*fy*2))
for y in range(-fy, fy):
for x in range(-fx, fx):
# Look for files one directory up.
fname = "../%d_%d_%d.bmp"%(n, x, y)
if os.path.isfile(fname):
hasmaps = True
im = Image.open(fname)
new_im.paste(im, ((x+fx)*fpx, (y+fy)*fpx))
if hasmaps:
new_im.save("map_%d.bmp"%n, 'BMP')
And my fancy version:
# Original code was written by Vinylon
# Accursedfarms.com
# some illustrating tweaks by Nicord
# Moddb.com
from PIL import Image
import os.path
def count_this(given_list, prefix):
number = 0
for point in given_list:
if point[0:3] == (str(prefix) + '_') or point[0:2] == (str(prefix) + '_'):
number += 1
if 0 <= number < 10:
return '00' + str(number)
elif 10 <= number < 100:
return '0' + str(number)
else:
return str(number)
directory = 'automaps6/'
print('----------------------------------------------------------------------------')
print('1. Starting to analyze "%s" directory' % directory)
files = os.listdir(directory)
names = []
for file in files:
pos = file.find('_')
if pos != -1:
names.append(int(file[0:pos]))
result = list(set(names))
result.sort()
counts = []
for current in result:
counts.append(count_this(files, current))
print('Total {} tiles found for {} maps'.format(len(files), len(result)))
print('----------------------------------------------------------------------------')
print('2. Starting to stitch tiles')
fpx = 64
# max +/- Y coordinate
fy = 40
# max +/- X coordinate
fx = 90
hasmaps = False
for n in range(0, len(result)):
hasmaps = False
new_im = Image.new('RGB', (fpx * fx * 2, fpx * fy * 2))
if result[n] < 10:
inp = '0'
else:
inp = ''
print('Processing map [{}{}], it has {} tiles, saved as "revenant_map_{}{}.bmp'.format(inp, result[n], counts[n], inp, result[n]))
for y in range(-fy, fy):
for x in range(-fx, fx):
fname = directory + "%d_%d_%d.bmp" % (result[n], x, y)
if os.path.isfile(fname):
hasmaps = True
im = Image.open(fname)
new_im.paste(im, ((x + fx) * fpx, (y + fy) * fpx))
if hasmaps:
new_im.save("revenant_map_%s%d.bmp" % (inp, result[n]), 'BMP')
result[n] = 0
print('----------------------------------------------------------------------------')
if sum(result) == 0:
print('Stitching successfully completed')
else:
print('Something has gone wrong, re check your settings')