aboutsummaryrefslogtreecommitdiff
path: root/plugins/imager.py
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/imager.py')
-rwxr-xr-xplugins/imager.py44
1 files changed, 31 insertions, 13 deletions
diff --git a/plugins/imager.py b/plugins/imager.py
index 76d93b3..fc7d77b 100755
--- a/plugins/imager.py
+++ b/plugins/imager.py
@@ -1,28 +1,47 @@
-#!/usr/bin/python3
-"""
-This script generates an PNG image from a SALIS save file (or a list of saved
+#!/usr/bin/python
+'''
+This script generates a PNG image from a SALIS save file (or a list of saved
files), on which each pixel corresponds to a single byte on the simulation.
It's useful for identifying large scale structures and appreciating the
-large-scale evolution of the world.
+macro-evolution of the world.
Tu run it, simply call it from within the ./bin/ directory inside the SALIS
main directory, such as:
-../plugins/imager.py def.sim*
+../plugins/imager.py def.sim.*.auto
-Calling this will create a PNG image for each file beggining with "def.sim".
-"""
+Calling this will create a PNG image for each file matching the given pattern.
+
+By default, this script ignores any existing simulation files whose name
+matches an existing image on the same directory. You may force it to overwrite
+existing images by passing the '-o' flag before the file list parameter.
+'''
+import os
import sys
from ctypes import *
from PIL import Image
-files = sys.argv[1:]
-salis = CDLL("libsalis.so")
+
+if sys.argv[1] == '-o':
+ overwrite = True
+ files = sys.argv[2:]
+else:
+ overwrite = False
+ files = sys.argv[1:]
+
+salis = CDLL('libsalis.so')
salis.sm_getSize.restype = c_uint
def makeImage(iname):
- salis.s_load(bytes(iname, "utf-8"))
+ oname = iname + '.png'
+
+ if not overwrite:
+ if os.path.isfile('./' + oname):
+ print(oname + ' skipped')
+ return
+
+ salis.s_load(bytes(iname, 'utf-8'))
lsize = int(salis.sm_getSize() ** 0.5)
- image = Image.new("L", (lsize, lsize), "black")
+ image = Image.new('L', (lsize, lsize), 'black')
pixels = image.load()
for y in range(lsize):
@@ -32,9 +51,8 @@ def makeImage(iname):
pixels[x, y] = byte
salis.s_quit()
- oname = iname + ".png"
image.save(oname)
- print(oname + " generated")
+ print(oname + ' generated')
for f in files:
makeImage(f)