'Get largest rectangle after rotation.
http://stackoverflow.com/questions/16702966/rotate-image-and-crop-out-black-borders'

@staticmethod
def largest_rotated_rect(w, h, angle):

    angle = ((angle / 180.0) * math.pi)
    if ((w <= 0) or (h <= 0)):
        return (0, 0)
    width_is_longer = (w >= h)
    (side_long, side_short) = ((w, h) if width_is_longer else (h, w))
    (sin_a, cos_a) = (abs(math.sin(angle)), abs(math.cos(angle)))
    if (side_short <= (((2.0 * sin_a) * cos_a) * side_long)):
        x = (0.5 * side_short)
        (wr, hr) = (((x / sin_a), (x / cos_a)) if width_is_longer else ((x / cos_a), (x / sin_a)))
    else:
        cos_2a = ((cos_a * cos_a) - (sin_a * sin_a))
        (wr, hr) = ((((w * cos_a) - (h * sin_a)) / cos_2a), (((h * cos_a) - (w * sin_a)) / cos_2a))
    return (int(np.round(wr)), int(np.round(hr)))
