ssecorp wrote:
or why does this take so god damn long time?

Several reasons. One of which is that try: except: is slow.

and if I run into an IndexError it break out of the inner loop right?
so having range up to 10000000 or 1000 wouldn't matter if biggest
working x is 800?

try: except: needs to set up a few things before the try: suite is executed. You pay this cost regardless of whether the exception fires or not.

def getPixels(fileName):
    im = PIL.Image.open(fileName)
    colors = []
    for y in range(1, 1000):
        row = []
        for x in range(1, 1000):
            try:
                color = im.getpixel((x,y))
                row.append(color)
            except IndexError:
                break

Images have a size tuple attached to them. I recommend using that to get the upper bounds of the iterations.

            colors.append(row)
    return numpy.array(colors)

Or, with reasonably modern versions of PIL and numpy:


In [1]: import Image

In [2]: im = Image.open('lena.png')

In [3]: import numpy

In [4]: numpy.asarray(im)
Out[4]:
array([[[228, 134, 132],
        [228, 134, 132],
        [228, 135, 130],
        ...,
        [244, 151, 136],
        [227, 132, 114],
        [197, 102,  82]],

       [[228, 135, 130],
        [228, 135, 130],
        [228, 135, 130],
        ...,
        [237, 145, 124],
        [219, 127, 102],
        [191, 100,  73]],

       [[227, 134, 129],
        [227, 134, 129],
        [227, 134, 127],
        ...,
        [236, 147, 117],
        [216, 130,  97],
        [192, 106,  71]],

       ...,
       [[ 87,  22,  56],
        [ 89,  24,  58],
        [ 90,  25,  59],
        ...,
        [178,  67,  76],
        [180,  65,  72],
        [179,  62,  70]],

       [[ 87,  22,  56],
        [ 88,  23,  57],
        [ 90,  25,  59],
        ...,
        [183,  68,  75],
        [188,  67,  72],
        [190,  67,  72]],

       [[ 86,  21,  55],
        [ 88,  23,  57],
        [ 90,  25,  59],
        ...,
        [186,  70,  73],
        [193,  70,  73],
        [195,  71,  73]]], dtype=uint8)


--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to