From: Lorenzo I. <lor...@gm...> - 2008-04-16 22:52:57
|
Dear All, Quite some time ago I asked some questions abut how to make a movie in Visual Python. Among the various answers I got, I was trying this suggestion: On 14/01/2008, Kadir Haldenbilen <kha...@ya...> wrote: > > Lorenzo Isella wrote: > > > I managed to get some decent animations on my laptop (running Debian > > testing); now my question is how to get at least a set of png (or any > > other decent format; pdf, eps, jpg etc...) files with the "snapshots" > > of my system. > > I can answer your question for Windows environment. Same or similar solution > MAY or > MAY NOT apply for Linux, I have no experience in Linux environment. > > First you need to install Python Image Library, PIL, if you have not done so > already. You may be using it already, if you are using TEXTURE feature of > the recent Beta versions of VPython. > > Then in your source code you need to add some lines, like the followings: > > import Image > import ImageGrab > ... > > Your animation code goes here > > ... > > while looping: > > im = > ImageGrab.grab((24,30,ImageWidth-4,ImageHeight-4)) > fn = "Cat"+str(pn)+".png" > im.save(fn) > > fn is the filename in Windows environment. > > IF THIS SYSTEM WORKS in LINUX, then someting similar to that of filename > should be sufficient. > ImageGrab needs the display location (upper-left corner) and display > sizedefined to it, so it picks up > the image from the screen for you. > > You need to set up some sort of a counter in the loop like the str(pn), to > get a unique > file name for each snapshot. > > Hope it works... > > Kadir > > > ________________________________ > Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it > now. Now, unfortunately I do not think this works for linux. Consider the small example given below: #! /usr/bin/env python import scipy as s import numpy as n import pylab as p import visual as v import Image import ImageGrab x_list=s.arange(10) y_list=s.zeros(10) y_list[:]=1. z_list=y_list box_size=100. #v.scene = v.display(title="System Snapshot", width=box_size, height=box_size, x=0, y=0, # range=box_size, center=(0.,0.,0.)) my_rad=1. particles=[v.sphere(pos=loc,radius=my_rad,color=v.color.blue)\ for loc in zip(x_list,y_list,z_list)] im = ImageGrab.grab((24,30,ImageWidth-4,ImageHeight-4)) fn = "Cat"+str(pn)+".png" im.save(fn) If I run it on my machine (Debian testing) then I got the following error message: Traceback (most recent call last): File "<stdin>", line 11, in ? File "/usr/lib/python2.4/site-packages/PIL/ImageGrab.py", line 34, in ? import _grabscreen ImportError: No module named _grabscreen Is the module ImageGrab available for Debian (or for linux in general)? Or does anyone know of a workaround for this? Many thanks Lorenzo http://physics.syr.edu/~salgado/software/vpython/EMWave.py |