Use Python e PIL para fatiar uma imagem verticalmente

Digamos que você tenha uma imagem muito longa como esta.

Cenário

E agora você deseja dividi-lo em pedaços menores, porque é muito longo.

Aqui está um script Python que fará isso. Isso foi útil para mim na preparação de imagens muito longas para documentos LaTeX.

from __future__ import division
import Image
import math
import os

def long_slice(image_path, out_name, outdir, slice_size):
"""slice an image into parts slice_size tall"""
img
= Image.open(image_path)
width
, height = img.size
upper
= 0
left
= 0
slices
= int(math.ceil(height/slice_size))

count
= 1
for slice in range(slices):
#if we are at the end, set the lower bound to be the bottom of the image
if count == slices:
lower
= height
else:
lower
= int(count * slice_size)

bbox
= (left, upper, width, lower)
working_slice
= img.crop(bbox)
upper
+= slice_size
#save the slice
working_slice
.save(os.path.join(outdir, "slice_" + out_name + "_" + str(count)+".png"))
count
+=1

if __name__ == '__main__':
long_slice
("longcat.jpg","longcat", os.getcwd(), 300)

Esta é a saída

Cenário


Cenário


Cenário