Pátek , 27 Červen 2025
Domů Programování Python GUI & vodoznak do obrázku
ProgramováníPython

Python GUI & vodoznak do obrázku

blank
blank

Zde je jednoduchý příklad programu, který vytváří GUI pomocí knihovny Tkinter a aplikuje vodoznak na vybraný obrázek pomocí knihovny PIL (Pillow).

Tento program vytvoří okno s textovým polem pro zadání textu vodoznaku, velikostí fontu, nastavením průhlednosti v rozmezí 0-100%, tlačítkem pro výběr obrázku a volbou, kam se má textové pole umístit.

Poznámka: Tento kód není odolný vůči chybám a neřeší mnoho různých situací, které mohou nastat při interakci s uživatelem nebo při manipulaci s obrázky nebo soubory. Je to pouze základní demonstrace toho, jak lze takový program vytvořit. Pro produkční použití by bylo třeba kód značně vylepšit a rozšířit.

				
					from tkinter import Tk, Label, Button, Entry, filedialog, StringVar, OptionMenu
from PIL import Image, ImageDraw, ImageFont

class Watermarker:
    def __init__(self, master):
        self.master = master
        master.title("Vodoznak")

        self.label = Label(master, text="Vložte text vodoznaku:")
        self.label.pack()

        self.entry = Entry(master)
        self.entry.pack()

        self.size_label = Label(master, text="Vložte velikost textu:")
        self.size_label.pack()

        self.size_entry = Entry(master)
        self.size_entry.pack()

        self.opacity_label = Label(master, text="Uveďte průhlednost (0-100):")
        self.opacity_label.pack()

        self.opacity_entry = Entry(master)
        self.opacity_entry.pack()

        self.position_label = Label(master, text="Vyberte polohu vodoznaku:")
        self.position_label.pack()

        self.positionVar = StringVar(master)
        self.positionVar.set("Dole vpravo")  # defaultní hodnota
        self.position_options = OptionMenu(master, self.positionVar, "Dole vpravo", "Dole vlevo", "Nahoře vlevo", "Nahoře vpravo")
        self.position_options.pack()

        self.greet_button = Button(master, text="Vybrat a uložit obrázek", command=self.watermark)
        self.greet_button.pack()

    def watermark(self):
        watermark_text = self.entry.get()
        text_size = int(self.size_entry.get())
        opacity = int(self.opacity_entry.get())
        position = self.positionVar.get()
        file_path = filedialog.askopenfilename()

        if file_path:
            image = Image.open(file_path).convert("RGBA")
            watermark_image = Image.new('RGBA', image.size, (255, 255, 255, 0))
            draw = ImageDraw.Draw(watermark_image)
            font = ImageFont.truetype('arial.ttf', text_size)
            textwidth, textheight = draw.textsize(watermark_text, font)
            margin = 10

            if position == "Dole vpravo":
                x = image.width - textwidth - margin
                y = image.height - textheight - margin
            elif position == "Dole vlevo":
                x = margin
                y = image.height - textheight - margin
            elif position == "Nahoře vlevo":
                x = margin
                y = margin
            else:  # Nahoře vpravo
                x = image.width - textwidth - margin
                y = margin

            draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, int((opacity / 100) * 255)))

            watermarked = Image.alpha_composite(image, watermark_image)
            watermarked.show()
            watermarked.save(f"watermarked_{file_path}")

root = Tk()
my_gui = Watermarker(root)
root.mainloop()
				
			

Přizpůsobil jsem kód pro nastavení průhlednosti textu a navíc jsem přidal textové pole pro zadání hodnoty průhlednosti. Vezměte prosím na vědomí, že hodnoty průhlednosti by měly být v rozmezí od 0 do 100, kde 0 znamená úplnou průhlednost (tj. text nebude viditelný) a 100 znamená žádnou průhlednost (tj. text bude plně viditelný).
Ujistěte se prosím, že máte v systému nainstalovanou nejnovější verzi knihovny PIL (Pillow), aby vše fungovalo správně.

Zanechte komentář

Napsat komentář

Související články

blank
ProgramováníStrojové učeníUmělá inteligence

Neuromorfní čipy vs. GPU/TPU

Top články Neuromorfní čipy vs. GPU/TPU 19. 6. 2025 Edge-AI v IoT:...

blank
PythonTensorFlow.js

🐍 Úvod do TensorFlow Lite & Python

TensorFlow Lite (TFLite) ve spojení s Pythonem otevírá dveře on-device strojovému učení...

blank
Python

Detekční systém v Pythonu s GPU akcelerací

Desktop Motion Detection s GPU akcelerací🎯 Účel programuTento nástroj sleduje vybrané okno...

blank
PythonYouTube videa

Python generátor náhledového obrázku YouTube videa

import re import os import requests import argparse from urllib.parse import urlparse,...