summaryrefslogtreecommitdiffstats
path: root/Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py')
-rw-r--r--Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py b/Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py
new file mode 100644
index 0000000..ac261b5
--- /dev/null
+++ b/Mac/Contrib/ImageHelpers/ExtPixMapWrapper.py
@@ -0,0 +1,46 @@
+'''
+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)
+
+
+
+