mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
	
	
		
			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) | ||
|  | 		 | ||
|  | 			 | ||
|  | 		 | ||
|  | 			 |