Parse a size string (i.e. "200", "200x100", "x200", etc.) into a
        (width, height) tuple.

def parse_size(image, size):
        """
        Parse a size string (i.e. "200", "200x100", "x200", etc.) into a
        (width, height) tuple.
        """
        bits = size.split("x")
        if image.size[0] == 0 or image.size[1] == 0:
            ratio = 1.0
        else:
            ratio = float(image.size[0]) / float(image.size[1])

        if len(bits) == 1 or not bits[1]:
            width = int(bits[0])
            height = int(1 / ratio * width)
        elif not bits[0]:
            height = int(bits[1])
            width = int(height * ratio)
        else:
            width, height = map(int, bits)
        return width, height