CodeGym /Kursy /Python SELF PL /Rysowanie: teksty, linie i znaki wodne

Rysowanie: teksty, linie i znaki wodne

Python SELF PL
Poziom 46 , Lekcja 0
Dostępny

1. Dodawanie tekstu na obraz

Aby dodać tekst na obraz w Pillow, używa się modułu ImageDraw, który udostępnia metodę text() do wyświetlania tekstu na określonych współrzędnych.

Proste dodanie tekstu

                
from PIL import ImageDraw, ImageFont

# Tworzymy obiekt do rysowania
draw = ImageDraw.Draw(image)

# Dodanie tekstu na obraz
text = "Przykład tekstu"
draw.text((50, 50), text, fill="white")

# Zapisanie obrazu z tekstem
image.save("text_example.jpg")
                
            

W tym przykładzie tekst "Przykład tekstu" jest dodawany na współrzędnych (50, 50). Parametr fill określa kolor tekstu, który można podać jako ciąg znaków ("white", "black") lub w formacie RGB ((255, 255, 255)).

Ustawienie czcionki tekstu

Domyślnie Pillow używa standardowej czcionki. Aby wybrać inną czcionkę i ustawić jej rozmiar, użyj ImageFont.truetype(). Upewnij się, że plik czcionki jest dostępny w twoim systemie.

                
# Ładowanie czcionki
font = ImageFont.truetype("arial.ttf", 36)

# Dodanie tekstu z własną czcionką
draw.text((50, 100), text, font=font, fill="yellow")
image.save("text_custom_font_example.jpg")
                
            

W tym przypadku używamy czcionki arial.ttf o rozmiarze 36 pikseli. Jeśli nie masz odpowiedniej czcionki, możesz ją pobrać i wskazać ścieżkę do pliku.

2. Dodawanie znaku wodnego

Znak wodny to półprzezroczysty tekst lub obraz, który nakłada się na zdjęcie, aby chronić je przed kopiowaniem. Możesz go użyć, aby dodać logo lub informacje o autorze. W Pillow można stworzyć prosty tekstowy znak wodny.

Tekstowy znak wodny

                
# Tworzymy obiekt do rysowania
draw = ImageDraw.Draw(image)

# Tekst i czcionka dla znaku wodnego
watermark_text = "© 2023 My Company"
font = ImageFont.truetype("arial.ttf", 24)

# Określenie współrzędnych dla umieszczenia znaku wodnego
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font)
x = width - text_width - 10
y = height - text_height - 10

# Dodanie znaku wodnego w prawym dolnym rogu
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save("watermarked_example.jpg")
                
            

W tym przykładzie tekstowy znak wodny jest dodawany w prawym dolnym rogu obrazu. Obliczamy wartości x i y, aby znak był lekko odsunięty od krawędzi obrazu.

3. Dodawanie elementów graficznych

Poza tekstem, Pillow pozwala rysować podstawowe elementy graficzne, takie jak linie, prostokąty, okręgi i elipsy. To przydatne podczas tworzenia ramek, wyróżniania obszarów i dodawania kształtów geometrycznych.

Rysowanie linii

Aby narysować linię, użyj metody line(), która przyjmuje współrzędne początku i końca linii.

                
# Rysowanie linii od lewego górnego rogu do prawego dolnego
draw.line((0, 0, width, height), fill="red", width=5)
image.save("line_example.jpg")
                
            

Ten kod rysuje czerwoną linię biegnącą po przekątnej od lewego górnego do prawego dolnego rogu obrazu.

Rysowanie prostokątów

Prostokąt rysuje się za pomocą metody rectangle(), która przyjmuje współrzędne lewego górnego i prawego dolnego narożnika.

                
# Rysowanie prostokąta
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
image.save("rectangle_example.jpg")
                
            

W tym przypadku tworzony jest prostokąt z niebieskim konturem o grubości 3 pikseli. Możesz także użyć parametru fill, aby wypełnić prostokąt kolorem.

Rysowanie okręgów i elips

Metoda ellipse() pozwala rysować okręgi i elipsy. Aby narysować okrąg, podaj takie same wymiary szerokości i wysokości.

                
# Rysowanie okręgu
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
image.save("circle_example.jpg")
                
            

W tym przypadku tworzony jest okrąg ze środkiem w punkcie (200, 200). Jeśli podasz różne wymiary szerokości i wysokości, powstanie elipsa.

Rysowanie wielokątów

Aby narysować wielokąt, użyj metody polygon(), która przyjmuje współrzędne wierzchołków kształtu.

                
# Rysowanie trójkąta
draw.polygon([(100, 100), (150, 50), (200, 100)], outline="purple", fill="orange")
image.save("polygon_example.jpg")
                
            

Ten kod rysuje trójkąt z pomarańczowym wypełnieniem i fioletowym konturem. Możesz stworzyć kształt dowolnego rodzaju, przekazując współrzędne jego wierzchołków.

4. Przykłady

Przykład tworzenia kompozycji z tekstem i grafiką

Połączmy wszystko, co omówiliśmy, i stwórzmy obraz z tekstem, znakiem wodnym i elementami graficznymi.

                
from PIL import Image, ImageDraw, ImageFont

# Ładowanie obrazu
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)

# Dodanie tekstu
font = ImageFont.truetype("arial.ttf", 36)
draw.text((50, 50), "Demo Text", font=font, fill="yellow")

# Dodanie znaku wodnego w prawym dolnym rogu
watermark_text = "© 2023 My Company"
font_watermark = ImageFont.truetype("arial.ttf", 24)
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font_watermark)
x = width - text_width - 10
y = height - text_height - 10
draw.text((x, y), watermark_text, font=font_watermark, fill=(255, 255, 255, 128))

# Rysowanie linii, prostokąta i okręgu
draw.line((0, 0, width, height), fill="red", width=5)
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
draw.ellipse((150, 150, 250, 250), outline="green", width=4)

# Zapisanie rezultatu
image.save("final_composition_example.jpg")
                
            

Ten przykład tworzy obraz z tekstem, znakiem wodnym i kilkoma elementami graficznymi (linia, prostokąt i okrąg). Takie kompozycje mogą być używane w prezentacjach, blogach i tworzeniu profesjonalnie wyglądających obrazów.

Zastosowanie praktyczne

  • Oznaczanie i ochrona obrazów: Znaki wodne pomagają chronić obrazy przed nieautoryzowanym wykorzystaniem, a tekst umożliwia dodanie informacji o autorze lub firmie.
  • Przygotowanie obrazów do mediów społecznościowych: Dodawanie tekstu i grafiki pozwala przygotować obrazy do publikacji z dodatkowymi informacjami.
  • Infografiki i wizualizacja danych: Użycie elementów graficznych, takich jak linie i figury, umożliwia tworzenie prostych wykresów i diagramów, co sprawia, że Pillow jest przydatny do tworzenia infografik.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION