47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
|
'''
|
||
|
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)
|
||
|
|
||
|
|
||
|
|
||
|
|