Edición de imágenes con Python

Iniciado por xavieeee, 18 Julio 2015, 02:54 AM

0 Miembros y 1 Visitante están viendo este tema.

xavieeee

Buenas,

Estoy intentando crear una aplicación para editar imágenes con Python.

Esto es lo que quiero hacer:
1.- Crear una imagen con  un screenshot #ok
2.- Convertir la imagen a blanco y negro #ok
3.- Borrar las filas que sean enteras  negras #ok
4.- Borrar las columnas que sean enteras negras

No entiendo la lógica del punto 3, y no soy capaz de editar  la función que borra las filas para que borre las columnas.

Espero que podáis ayudarme

Un saludo,


Código (python) [Seleccionar]
import pyscreenshot as ImageGrab
from itertools import izip
from PIL import Image
import time

#Screenshot y guarda como .png

im1=ImageGrab.grab(bbox=(495,198,511,209))
im1.save("imagen.png","png")

#Convertir imagen a blanco y negro
col = Image.open("imagen.png")
gray = col.convert('L')
bw = gray.point(lambda x: 0 if x<128 else 255, '1')
bw.save("imagenbw.png")

#Borrar las filas que sean completamente negras
def find_rows_with_color(pixels, width, height, color):
   rows_found=[]
   for y in xrange(height):
       for x in xrange(width):
           if pixels[x, y] != color:
               break
       else:
           rows_found.append(y)
   return rows_found

rold_im = Image.open("imagenbw.png")
if old_im.mode != 'RGB':
   old_im = old_im.convert('RGB')
pixels = old_im.load()
width, height = old_im.size[0], old_im.size[1]
rows_to_remove = find_rows_with_color(pixels, width, height, (0, 0, 0)) #Remove black rows
new_im = Image.new('RGB', (width, height - len(rows_to_remove)))
pixels_new = new_im.load()
rows_removed = 0
for y in xrange(old_im.size[1]):
   if y not in rows_to_remove:
       for x in xrange(new_im.size[0]):
           pixels_new[x, y - rows_removed] = pixels[x, y]
   else:
       rows_removed += 1
new_im.save("imagennew.png")