code: def _long_image_slice(in_filepath, out_filepath, slice_size):
      
      print 'slicing image: {0}'.format(in_filepath)
      img = Image.open(in_filepath)
      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)
          # set the bounding box! The important bit
          bbox = (left, upper, width, lower)
          working_slice = img.crop(bbox)
          upper += slice_size
          # save the slice
          new_filepath = _build_sliced_filepath(out_filepath, count)
          working_slice.save(new_filepath)
          count += 1
docs: Slice an image into parts slice_size tall.