| ''' |
| A really quick and dirty hack to extend PixMapWrapper |
| They are mere copies of the toImage and fromImage methods. |
| Riccardo Trocca (rtrocca@libero.it) |
| ''' |
| from PixMapWrapper import * |
| import Numeric |
| |
| class ExtPixMapWrapper(PixMapWrapper): |
| |
| def toNumeric(self): |
| |
| data = self.tostring()[1:] + chr(0) |
| bounds = self.bounds |
| tmp=Numeric.fromstring(data,Numeric.UnsignedInt8) |
| #tmp.shape=(bounds[3]-bounds[1],bounds[2]-bounds[0],4) |
| tmp.shape=(bounds[2]-bounds[0],bounds[3]-bounds[1],4) |
| return Numeric.transpose(tmp,(1,0,2)) |
| |
| def fromNumeric(self,num): |
| s=num.shape |
| x=num.shape[1] |
| y=num.shape[0] |
| #bands=1 Greyscale image |
| #bands=3 RGB image |
| #bands=4 RGBA image |
| if len(s)==2: |
| bands=1 |
| num=Numeric.resize(num,(y,x,1)) |
| else: |
| bands=num.shape[2] |
| |
| if bands==1: |
| num=Numeric.concatenate((num,num,num),2) |
| bands=3 |
| if bands==3: |
| alpha=Numeric.ones((y,x))*255 |
| alpha.shape=(y,x,1) |
| num=Numeric.concatenate((num,alpha),2) |
| |
| data=chr(0)+Numeric.transpose(num,(1,0,2)).astype(Numeric.UnsignedInt8).tostring() |
| PixMapWrapper.fromstring(self,data,x,y) |
| |
| |
| |
| |