Hello,<div><br></div><div><div>First, you might want to change both range()-methods in the for-loops to <b>xrange()</b>, since the latter is way faster.</div><div><br></div><div>Anyway, to recognize which calls are slowing down your calculations, try to profile your application (using e.g. valgrind).</div>

<div><br></div><div>In an ultimate case, when in need of some serious responsiveness on multi-megapixel-images, you can use SIP, SWIG, Cython or cTypes  to let a C(++)-method do this job at a blazing speed: I once reached sub-second color conversion runs on a 16Mpixel image on an average laptop CPU.. Python is ok for this as long as it's good enough for you, but since it's quite slow by implemenation, you might want to take a look at some alternative approaches.</div>

<div><br><div class="gmail_quote"><br></div><div class="gmail_quote">On Fri, Aug 20, 2010 at 2:21 PM, zhang jian <span dir="ltr"><<a href="mailto:zhangmdev@gmail.com">zhangmdev@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Hello,<div><br></div><div>This is my first post. I want to write a simply app layering several images each with different weighting. This problem is pixel manipulation by QImage appears to be quite slow. My code is:</div>


<div><br></div><div><div>        w = image.width()</div><div>        h = image.height()</div><div>        </div><div>        for j in range(h):</div><div>            for i in range(w):</div>
<div>                 col = QtGui.QColor(image.pixel(i, j))</div><div>                 </div><div>                 col.setRed(col.red()*self.fKd)</div><div>                 image.setPixel(i, j, col.rgb());</div><div>                 </div>


<div>                 </div><div><br></div><div><span style="white-space:pre-wrap"> </span>painter.drawImage(0, 0, image)</div><div><br></div>
<div>Just one image changed in red channel. It took about 5 seconds to redraw a 1280 X 720 image any time I changed Kd. Far from interactive. I'd like to know is there any way to do stuff like that faster? Or calculating a million pixels in PyQt is just a bad idea? Any advice should be appreciated.</div>


<div><br></div><div>Thanks,</div><div><br></div><font color="#888888"><div>zhang</div></font></div>
<br>_______________________________________________<br>
PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com">PyQt@riverbankcomputing.com</a><br>
<a href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt" target="_blank">http://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br></blockquote></div><br><br clear="all"><br>-- <br>Nick Gaens<br>
</div></div>