import os

import numpy
from astropy.visualization import ZScaleInterval

from gavo import api
from gavo.utils import fitstools, imgtools

class PreviewMaker(api.PreviewMaker):
	def getPreviewData(self, srcName):
		with open(api.getConfig("inputsDir") / srcName, "rb") as inFile:
			pixels = numpy.array([row
				for row in fitstools.iterScaledRows(inFile,
					destSize=200)])
		mask = pixels > 0.5 * numpy.median(pixels) #mask empty pixels
		lower_limit, upper_limit = ZScaleInterval().get_limits(pixels[mask])
		pixels[mask] = ((pixels[mask] - lower_limit) / (upper_limit - lower_limit)) ** 12.0 
		pixels[mask] = numpy.clip(pixels[mask], 0.0, 1.0)
		pixels[~mask] = 1.0
		return imgtools.jpegFromNumpyArray(pixels)
		

if __name__=="__main__":
  api.procmain(PreviewMaker, "bgds/robott", "import")
