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