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
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")