Problems cropping entire white lines from .png file
<p>What I want to do is to crop out the white lines above a given instagram print screen. I tried doing that by finding the center of the image and going up, line by line, until I found the first line entirely white. Any idea why my code is not working? </p>

<pre><code>from PIL import Image

image_file = "test.png"
im = Image.open(image_file)
width, height = im.size
centerLine = height // 2

entireWhiteLine = set()
entireWhiteLine.add(im.getpixel((0, 0)))
terminateUpperCrop = 1

while terminateUpperCrop != 2 :

    for i in range(centerLine, 1, -1) :
        entireLine = set()
        upperBorder = i - 1
        for j in range(0, width, 1) :
            entireLine.add((im.getpixel((i, j))))
            if entireLine == im.getpixel((0,0)):
                box = (0, upperBorder, width, height)
                crop = im.crop((box))
                crop.save('test2.png')
                terminateUpperCrop = 2
</code></pre>

<p>Your <code>getpixel()</code> call is actually searching with the coordinates the wrong way around, so in effect you were scanning for the left edge. You could use the following approach. This creates a row of data containing only white pixels. If the length of the row equals your width, then you know they are all white.</p>

<pre><code>from PIL import Image

image_file = "test.png"
im = Image.open(image_file)
width, height = im.size
centerLine = height // 2

white = (255, 255, 255)

for y in range(centerLine, 0, -1) :
    if len([1 for x in range(width) if im.getpixel((x, y)) == white]) == width - 1:
        box = (0, y, width, height)
        crop = im.crop((box))
        crop.save('test2.png')
        break
</code></pre>

python set python-imaging-library crop