diff --git a/Tests/test_imagedraw2.py b/Tests/test_imagedraw2.py index 47943393fd4..c09850c8083 100644 --- a/Tests/test_imagedraw2.py +++ b/Tests/test_imagedraw2.py @@ -103,7 +103,7 @@ def test_ellipse(bbox: Coords) -> None: # Arrange im = Image.new("RGB", (W, H)) draw = ImageDraw2.Draw(im) - pen = ImageDraw2.Pen("blue", width=2) + pen = ImageDraw2.Pen("blue") brush = ImageDraw2.Brush("green") # Act @@ -177,7 +177,7 @@ def test_polygon(points: Coords) -> None: # Arrange im = Image.new("RGB", (W, H)) draw = ImageDraw2.Draw(im) - pen = ImageDraw2.Pen("blue", width=2) + pen = ImageDraw2.Pen("blue") brush = ImageDraw2.Brush("red") # Act @@ -192,7 +192,7 @@ def test_rectangle(bbox: Coords) -> None: # Arrange im = Image.new("RGB", (W, H)) draw = ImageDraw2.Draw(im) - pen = ImageDraw2.Pen("green", width=2) + pen = ImageDraw2.Pen("green") brush = ImageDraw2.Brush("black") # Act @@ -202,6 +202,16 @@ def test_rectangle(bbox: Coords) -> None: assert_image_equal_tofile(im, "Tests/images/imagedraw_rectangle.png") +@pytest.mark.parametrize("bbox", BBOX) +def test_rectangle_pen_width(bbox: Coords) -> None: + im = Image.new("RGB", (W, H)) + draw = ImageDraw2.Draw(im) + pen = ImageDraw2.Pen("white", width=4) + draw.rectangle(bbox, pen) + assert im.getpixel((28, 28)) == WHITE + assert im.getpixel((50, 50)) == BLACK + + def test_big_rectangle() -> None: # Test drawing a rectangle bigger than the image # Arrange diff --git a/src/PIL/ImageDraw2.py b/src/PIL/ImageDraw2.py index 333edb71d34..2ae84bbf572 100644 --- a/src/PIL/ImageDraw2.py +++ b/src/PIL/ImageDraw2.py @@ -35,7 +35,11 @@ class Pen: - """Stores an outline color and width.""" + """Stores an outline color and width. + + :param color: The outline color. + :param width: The line width, in pixels. + """ def __init__(self, color: str, width: int = 1, opacity: int = 255) -> None: self.color = ImageColor.getrgb(color) @@ -115,8 +119,7 @@ def render( else: kwargs.setdefault("fill", fill) kwargs.setdefault("outline", outline) - if op == "line": - kwargs.setdefault("width", width) + kwargs.setdefault("width", width) getattr(self.draw, op)(xy, **kwargs) def settransform(self, offset: tuple[float, float]) -> None: