Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: xavieeee en 18 Julio 2015, 02:54 am



Título: Edición de imágenes con Python
Publicado por: xavieeee en 18 Julio 2015, 02:54 am
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
  1. import pyscreenshot as ImageGrab
  2. from itertools import izip
  3. from PIL import Image
  4. import time
  5.  
  6. #Screenshot y guarda como .png
  7.  
  8. im1=ImageGrab.grab(bbox=(495,198,511,209))
  9. im1.save("imagen.png","png")
  10.  
  11. #Convertir imagen a blanco y negro
  12. col = Image.open("imagen.png")
  13. gray = col.convert('L')
  14. bw = gray.point(lambda x: 0 if x<128 else 255, '1')
  15. bw.save("imagenbw.png")
  16.  
  17. #Borrar las filas que sean completamente negras
  18. def find_rows_with_color(pixels, width, height, color):
  19.    rows_found=[]
  20.    for y in xrange(height):
  21.        for x in xrange(width):
  22.            if pixels[x, y] != color:
  23.                break
  24.        else:
  25.            rows_found.append(y)
  26.    return rows_found
  27.  
  28. rold_im = Image.open("imagenbw.png")
  29. if old_im.mode != 'RGB':
  30.    old_im = old_im.convert('RGB')
  31. pixels = old_im.load()
  32. width, height = old_im.size[0], old_im.size[1]
  33. rows_to_remove = find_rows_with_color(pixels, width, height, (0, 0, 0)) #Remove black rows
  34. new_im = Image.new('RGB', (width, height - len(rows_to_remove)))
  35. pixels_new = new_im.load()
  36. rows_removed = 0
  37. for y in xrange(old_im.size[1]):
  38.    if y not in rows_to_remove:
  39.        for x in xrange(new_im.size[0]):
  40.            pixels_new[x, y - rows_removed] = pixels[x, y]
  41.    else:
  42.        rows_removed += 1
  43. new_im.save("imagennew.png")
  44.