[PyQt] Re: Efficiency under nested loop

Sergi Blanch i Torné sbt at ya.com
Fri Apr 25 10:12:46 BST 2008


Hi,

On my stand alone conversation, the current solution of the looping is:
	def convertfrom(self,image,depth):
		if self._debug:
			print "[PyImageViewer]convertfrom():"+str(int(bits*8))
		if depth == 1: # 8 bit grayscale
			shift = 0
		elif depth == 1.5: # 12 bits non packet
			shift = 4
		elif depth == 2: # 16 bits
			shift = 8
		else:
			raise "Not supported depth"
		return "".join(chr(i>>shift) for i in image )

The trapezoid problem continue here, but now at least I have a faster 
drawing...

/Sergi.
			

On Thursday 24 April 2008 16:05:36 Sergi Blanch i Torné wrote:
> Hi,
>
> In the discussion about the QListWidget[1] I saw something that happens to
> me also with the QImage conversion from 12 bits to 8. Remember that I have
> a problem showing grayscaled images[2] I need to say that the data needs to
> be process and it means the solution cannot be simply acquire the pictures
> in 8 bits.
>
> Right now I write a loop for the list and then convert to the array of
> unsigned chars need by the QImage. It means touch each element two times.
> The code is:
> 	#input: values list of the image
> 	#output: array of unsigned chars for the QImage
> 	def convertfrom(self,image,bits):
> 		if self._debug:
> 			print "[PyImageViewer]convertfrom():"+str(int(bits*8))
> 		if depth == 1: # 8 bit grayscale
> 			barfoo = image
> 		elif depth == 1.5: # 12 bits unpacket
> 			bar,barfoo = image,[]
> 			for i in range(len(bar)):
> 				barfoo.append(bar[i].__lshift__(4))#shift to loss 4 less significant
> bits #barfoo = bar
> 		elif depth == 2: # 16 bits
> 			bar,barfoo = image,[]
> 			for i in range(len(bar)):
> 				barfoo.append(bar[i].__lshift__(8))#shift to loss 4 less significant
> bits #barfoo = bar
> 		else:
> 			raise "Not supported depth"
> 		return array.array('B',barfoo).tostring()
>
> I am not sure but this tostring() call at the end, maybe means another
> third touch of all the elements to make it worst.
>
> Sano kaj liber!
>
> /Sergi.
>
> [1] http://www.riverbankcomputing.com/pipermail/pyqt/2008-April/019142.html
> [2] http://www.riverbankcomputing.com/pipermail/pyqt/2008-April/019130.html





More information about the PyQt mailing list