#! /usr/bin/python -t # _*_ coding: iso-8859-1 _*_ # Last edited on 2010-06-15 18:04:35 by stolfi MODULE_NAME = "jspnm" MODULE_DESC = "Read and write PGM/PPM images" MODULE_VERS = "1.0" MODULE_COPYRIGHT = "Copyright © 2010 State University of Campinas" MODULE_INFO = \ "A library module to read and write PNM/PPM/PBM images.\n" \ "\n" \ " Bla bla.\n" import sys import copy from math import sqrt def quantize(fval) : # Converts a float sample in {[0 _ 1]} to an int in {0..255} if (fval <= 0) : val = 0 elif (fval >= 1) : val = 255 else : val = 1 + math.floor(fval*254); if (val > 254) : val = 254 return val # ---------------------------------------------------------------------- def write_ppm_image(name, pic, nx, ny) : wr = open(name, "w") wr.write("P3\n") wr.write("%d %d %d\n" % (nx, ny, 255)) for iy in range(ny) : for ix in range(nx) : pix = pic[iy][ix] if ((pix == None) or (len(pix) != 3)) : sys.stderr.write("bogus color value in pixel (%d,%d) = %s\n" % (ix,iy,pix)); for ic in range(3) : val = quantize(pix[ic]) wr.write(" %d" % val ) if (ix % 10 == 0) : wr.write("\n") wr.write("\n") wr.close() # ---------------------------------------------------------------------- def write_pgm_image(name, pic, nx, ny) : wr = open(name, "w") wr.write("P2\n") wr.write("%d %d %d\n" % (nx, ny, 255)) for iy in range(ny) : for ix in range(nx) : val = quantize(pic[iy][ix]) wr.write(" %d" % val ) if (ix % 30 == 0) : wr.write("\n") wr.write("\n") wr.close() # ---------------------------------------------------------------------- # ----------------------------------------------------------------------