Beispiel #1
0
    def _draw_striped_meter(self, draw: ImageDraw.Draw):
        """Draw a striped meter"""
        meter_value = self._meter_value()
        x1 = y1 = self._metersize * M - 20
        width = self._meterthickness * M

        if self._wedgesize > 0:
            draw.arc(
                xy=(0, 0, x1, y1),
                start=meter_value - self._wedgesize,
                end=meter_value + self._wedgesize,
                fill=self._meterforeground,
                width=width,
            )
        else:
            _from = self._arcoffset
            _to = meter_value - 1
            _step = self._stripethickness
            for x in range(_from, _to, _step):
                draw.arc(
                    xy=(0, 0, x1, y1),
                    start=x,
                    end=x + self._stripethickness - 1,
                    fill=self._meterforeground,
                    width=width,
                )
Beispiel #2
0
    def _draw_solid_meter(self, draw: ImageDraw.Draw):
        """Draw a solid meter"""
        x1 = y1 = self._metersize * M - 20
        width = self._meterthickness * M

        if self._wedgesize > 0:
            meter_value = self._meter_value()
            draw.arc(
                xy=(0, 0, x1, y1),
                start=meter_value - self._wedgesize,
                end=meter_value + self._wedgesize,
                fill=self._meterforeground,
                width=width,
            )
        else:
            draw.arc(
                xy=(0, 0, x1, y1),
                start=self._arcoffset,
                end=self._meter_value(),
                fill=self._meterforeground,
                width=width,
            )
Beispiel #3
0
def rectangle_to_vinyle(np_img):
    """Convert lines into circles, from left=in to right=out (7min/img)"""
    min_radius = np_img.shape[1] // 2
    max_radius = np_img.shape[1] + min_radius
    side_length = max_radius * 2

    pil_circle = Image.new('RGB', (side_length, side_length), color='white')
    drawer = Draw(pil_circle, mode='RGB')

    degree_step = 180.0 / np_img.shape[0]
    #angle is 0 at 3 o'clock, increasing clockwise
    get_angle = lambda x: 270 - x * degree_step

    for i, col in tqdm(enumerate(np.transpose(np_img, axes=[1,0,2])), total=np_img.shape[1]):
        x0 = side_length // 2 - min_radius - i
        x1 = side_length // 2 + min_radius + i

        for j, pixel in enumerate(col):
            drawer.arc([x0, x0, x1, x1], get_angle(j+1), get_angle(j), tuple(pixel), 2)
            drawer.arc([x0, x0, x1, x1], get_angle(-j), get_angle(-j-1), tuple(pixel), 2)

    return pil_circle