Защита водяным знаком припомощи Pillow

Буба2001

Новичок
Пользователь
Июл 27, 2021
2
0
1
Добрый день!
Столкнулся с такой проблемой. нужно создать функцию принимающую два аргумента - наносимый текст и имя файла. В name прописывал полный путь - результата нет.

Python:
from PIL import Image, ImageDraw, ImageFont

def my_watermark(text, name):
    im = Image.open(name)
    width, height = im.size
    draw = ImageDraw.Draw(im)
    font = ImageFont.truetype('arial.ttf', 36)
    textwidth, textheight = draw.textsize(text, font)
    margin = 10
    x = width - textwidth - margin
    y = height - textheight - margin
    draw.text((x, y), text, font=font)
    im.show()
    im.save(name + '_wm.jpg')
name = '1.jpg'
text = 'This is text that should be watermarked onto the image'

Test Failed: [Errno 2] No such file or directory: '0000000000'


Пушит что нет пути к директории, что делать?
 
Последнее редактирование:

gad26032

Пользователь
Пользователь
Июл 26, 2021
18
7
3
@Буба2001 Привет, если хочеш что бы на твой вопрос ответили быстрее сделай так что бы его было легче понять.

Если вставляеш код то используй тэг для кода.
Selection_289.png

Так будет читабельней.

Так же добавь стектрейс и команду которой ты запускаеш свой скрипт.

В твоем случае можно попринотвать пути которые ты используеш что бы понять что конкретно ты пытаешся открыть и в каком месте валится.
 
  • Мне нравится
Реакции: Буба2001

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 670
477
83
у вас проблемы с путями...
ошибка test failed, что за тест? откуда там столько нулей?

я запустил ваш код, он работает, но...
в вашем коде есть ошибка, так как вы используете прозрачность, jpg это не поддерживает...
вам нужно сохранять в png или bmp, или делать конвертирование из RGBA в RGB...
 
Последнее редактирование:
  • Мне нравится
Реакции: Буба2001

Буба2001

Новичок
Пользователь
Июл 27, 2021
2
0
1
у вас проблемы с путями...
ошибка test failed, что за тест? откуда там столько нулей?

я запустил ваш код, он работает, но...
в вашем коде есть ошибка, так как вы используете прозрачность, jpg это не поддерживает...
вам нужно сохранять в png или bmp, или делать конвертирование из RGBA в RGB...
Точно!!! Решил проблему по другому.
Python:
import os.path
from PIL import Image, ImageDraw, ImageFont

def my_watermark (name, message):
    
    #Create an Image Object from an Image
    im = Image.open(name)
    width, height = im.size
    draw = ImageDraw.Draw(im)
    text = message
    font = ImageFont.truetype('arial.ttf', 36)
    textwidth, textheight = draw.textsize(text, font)
    # calculate the x,y coordinates of the text
    margin = 10
    x = width - textwidth - margin
    y = height - textheight - margin
    # draw watermark in the bottom right corner
    draw.text((x, y), text, font=font)
    im.show()
    e=name.split(".")[-1]
    n=name.split(".")[0]
    wm_name=(n+'_wm'+'.'+e)
    im.save(wm_name)
 

Форум IT Специалистов