Pillow icon indicating copy to clipboard operation
Pillow copied to clipboard

Can't use "align=center" together with "embedded_color=True"

Open CandreaA opened this issue 3 years ago • 1 comments

What did you do?

textwrapped = "Hello, world! 👋 Here are some emojis: 🎨 🌊 😎"
font = ImageFont.truetype(THIS_FOLDER+"/fonts/seguiemj.ttf", font_size) //[merged font](https://github.com/thedemons/merge_color_emoji_font)
d.text((int(qx),int(qy)), text=textwrapped, align="center", fill="#fff", font=font,  embedded_color=True)

What did you expect to happen?

center multiline text

What actually happened?

if i use "embedded_color=True" together with "align=center" i get this error:

 d.text((int(qx),int(qy)), text=textwrapped, align="center", fill="#fff", font=font, embedded_color=True)
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\PIL\ImageDraw.py", line 409, in text
    return self.multiline_text(
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\PIL\ImageDraw.py", line 563, in multiline_text
    self.text(
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\PIL\ImageDraw.py", line 498, in text
    draw_text(ink)
  File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\PIL\ImageDraw.py", line 480, in draw_text
    self.im.paste(color, coord + coord2, mask)
TypeError: 'float' object cannot be interpreted as an integer

If i remove "align=center" see here: https://imgur.com/a/rLnenPj - embedded color works fine:

image

If i remove "embedded_color=True" see here: https://imgur.com/a/Exq6aYe - align center works fine:

image

but they cant work together.

What are your OS, Python and Pillow versions?

  • OS: Windows 10
  • Python: 3.10
  • Pillow: 9.2

CandreaA avatar Aug 21 '22 10:08 CandreaA

I've created PR #6517 to resolve this. The problem is occurring for multiline center aligned embedded color text.

radarhere avatar Aug 22 '22 02:08 radarhere