Utiliza Python para invertir y traducir imágenes.

He escrito el siguiente código para recorrer todas las imágenes de una carpeta, crear su negativo y guardarlo con un nuevo nombre similar.

¿Cómo puedo hacer lo mismo para traducirlos por 5 píxeles a la derecha?

Código:

from PIL import Image import PIL.ImageOps import glob files = glob.glob('path/*.JPG') # Use *.* if you're sure all are images for f in files: print(1) image = Image.open(f) inverted_image = PIL.ImageOps.invert(image) out = f[:f.rfind('.')] inverted_image.save('%sn.JPG'%out) 

Busqué una función de traducción en ImageOps pero no pude encontrar una. ¿Hay alguna otra manera?

Usted podría tomar el siguiente enfoque. Esto crea una nueva imagen de 5 píxeles más grande y pega su imagen original en la nueva imagen compensada en 5 píxeles:

 from PIL import Image import PIL.ImageOps import glob shift = 5 files = glob.glob('path/*.JPG') # Use *.* if you're sure all are images for f in files: image = Image.open(f) inverted_image = PIL.ImageOps.invert(image) out = f[:f.rfind('.')] inverted_image.save('%sn.JPG'%out) # Shift the image 5 pixels width, height = image.size shifted_image = Image.new("RGB", (width+shift, height)) shifted_image.paste(image, (shift, 0)) shifted_image.save('%s-shifted.JPG' % out) 

Si desea cambiar las imágenes invertidas, cambie de la siguiente manera:

  shifted_image.paste(inverted_image, (shift, 0))