Как выбрать несколько текстовых координат, чтобы они не перекрывались с несколькими координатами изображения в одном и том же фоновом изображении, используя python? - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь скопировать текст и изображения на фоновое изображение с помощью библиотеки Python PIL. Я хочу добиться этого таким образом, чтобы новые изображения и текст не перекрывали друг друга и не касались границ, их нужно было отдельно размещать на одном фоновом изображении. Размер изображения и размер текста не имеет значения, он может быть любым, но его необходимо разместить внутри фонового изображения, должно быть минимум одно изображение и текст. сценарий, который я написал для достижения этой цели, как показано ниже

img = Image.open('imagefolder').resize((600,200))
b,l = img.size
width=20
height=20   
while height<l-10:
    hmax=0
    width=10
    select = random.choice([True,False])
    ran_height = random.choice(range(5,55))
    if select:
        while width<b:
            image_folder=random.choice(image_folders)            
            imagetemp=img.open(image_folder)
            size_w,size_h=imagetemp.size
            if size_h>hmax:
                hmax=size_h
            select_word = random.choice([True,False])
            d.text([10,30], "hello", helvetica)
            d.text([90,60], "python", helvetica)
            if select_word:
                if (width+size_w)<b-10 and (height+size_h)<l-10 :
                    (x, y) = (width, height)
                    image.paste(imagetemp,(x, y))                                               
                    width = width+size_w+10
                else:
                    height = height+hmax+10
                    break
            else:
                width =width+size_w+10
        height = height+hmax+10
    else:
        height = height+ran_height+10

В этом коде

d.text ([10,30], "привет", helvetica) d.text ([90,60], "python", helvetica)

печатает текст 'hello' и 'python' в координатах (10,30) и (90,60) соответственно. и

image.paste (imagetemp, (x, y))

печатает изображение в координатах (x, y) Я хочу передать значение координаты для такого текста, чтобы оно не попадало под координаты изображения или тексты не перекрывались с изображением. например изображение Если я передаю значение координаты изображения

d.text ([x, y], "привет", helvetica)

тексты будут напечатаны внутри изображения, это не то, что я ищу, я хочу напечатать вне изображения. Дайте мне знать, если у вас есть какие-либо вопросы. Я искал в Интернете, я не нашел ни одного примера для этого, есть много примеров для копирования текста внутри изображения с использованием PIL, а не снаружи изображения. Любое предложение будет полезно спасибо.

** Исправлена ​​ошибка с поиском размера текста

draw_txt.textsize (random_text, font = font) **

1 Ответ

0 голосов
/ 15 января 2019

** Исправлено путем нахождения размера текста

draw_txt.textsize (random_text, font = font) **

...