[PyQt] Efficiency under nested loop
Sergi Blanch i Torné
sbt at ya.com
Thu Apr 24 15:05:36 BST 2008
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