On Monday, October 29, 2012 3:48:09 PM UTC+1, Andrew Robinson wrote: > On 10/29/2012 06:39 AM, ic...@tagyourself.com wrote: > > > That's very kind of you but I don't think it would be particularly fitted > > to my needs. The program I'm trying to code creates an image as an 2D array > > of "pixels" which is defined by RGBA value. My program needs to access and > > modifies every component of every pixels in the image following a set of > > rules, kind of like the game of life, only more complex. > > > > > > In fact I only need a library to "push" this array of pixels in a > > displayable format for the GUI and in PNG format to write the image to > > disk. I don't need to do any fancy stuff with the image, just being able to > > display and write it. > > > > > > > > Then, actually, what I am suggesting was *almost* perfect. > > To do transparency, you need to write the portable any map (PAM) formation. > > > > Simply print a text header to a file which says: > > > > P7 > > WIDTH 10 > > HEIGHT 10 > > DEPTH 4 > > MAXVAL 255 > > TUPLTYPE RGB_ALPHA > > ENDHDR > > > > And then dump your 2D array to that same file. > > A very quick example in 17 lines of code: > > > > io = open( "anyname.pam","w") > > x,y = 10,10 > > gray=(128,128,128,255) # R,G,B,A value > > picture = [ [ gray ] * x ] * y # Make a blank gray canvas 2D array > > > > # Do whatever you want to the 2D picture array here! > > > > io.write( "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\nTUPLTYPE > > RGB_ALPHA\nENDHDR\n" % (x,y) ) > > > > for yi in xrange( y ): > > for xi in xrange( x ): > > pixel = picture[yi][xi] > > io.write( chr(pixel[0]) ) # R value > > io.write( chr(pixel[1]) ) # G value > > io.write( chr(pixel[2]) ) # B value > > io.write( chr(pixel[3]) ) # A value > > io.flush() > > > > io.close() > > > > And that's it. You may of course make this more efficient -- I'm just > > showing it this way for clarity. > > Many programs can read PAM directly; but for those that can't you can > > use nettools, or imagemagick, to convert it to PNG.
That's really interesting! Thank you so much! Never heard of PAM before... I will try that! -- http://mail.python.org/mailman/listinfo/python-list