Ako nakresliť tvary na obrázok s vankúšom?
Oct 28, 2025
Zanechajte správu
Ahoj! Ako dodávateľ vankúšov sa nevenujem len predaju špičkových vankúšov ako naprPrémiový mäkký hotelový vankúš do postele zo 100 % polyesteru s dutým vláknom,Hotelový vankúš vysokej kvality zo 100% polyesterového vlákna, aHotelový vankúš z bieleho husacieho peria vysokej kvality. Mám trochu talent aj na spracovanie obrazu. Dnes sa s vami podelím o to, ako kresliť tvary na obrázok pomocou Pillow, super šikovnej knižnice Python.
Čo je vankúš?
Najprv si povedzme, čo je vankúš. Vankúš je vidlička Python Imaging Library (PIL). Je ľahko použiteľný a poskytuje množstvo funkcií na otváranie, manipuláciu a ukladanie rôznych formátov obrázkových súborov. Či už ste nadšenec, ktorý chce pridať k fotografiám z dovolenky nejaké skvelé efekty, alebo profesionálny dizajnér pracujúci na projekte, Pillow môže byť vaším najlepším priateľom.
Inštalácia vankúša
Skôr ako začneme kresliť tvary, musíme si nainštalovať vankúš. Ak používate pip (čo je najbežnejší spôsob inštalácie balíkov Pythonu), jednoducho otvorte príkazový riadok alebo terminál a zadajte:
pip inštalačný vankúš
To je všetko! Za chvíľu budete mať vankúš pripravený na použitie.
Kreslenie základných tvarov
Začnime od základov. Nakreslíme niekoľko jednoduchých tvarov na obrázok. Najprv musíme importovať potrebné moduly a otvoriť obrázok.
z PIL import Image, ImageDraw # Otvoriť obrázok image = Image.open('váš_obrázok.jpg') draw = ImageDraw.Draw(image)
Vo vyššie uvedenom kóde najprv importujeme súborObrázokaImageDrawtriedy z Vankúšovej knižnice. Potom otvoríme súbor s obrázkom (mali by ste ho nahradiť'váš_obrázok.jpg'so skutočnou cestou k vášmu obrázku). TheImageDraw.Draw()vytvorí objekt, ktorý môžeme použiť na kreslenie na obrázok.


Kreslenie čiary
Kreslenie čiary je super jednoduché. Stačí zadať začiatočný a koncový bod čiary spolu s farbou a šírkou.
# Nakreslite čiaru draw.line((100, 100, 200, 200), fill='red', width=2)
V tomto príklade čiara začína v bode(100, 100)a končí o(200, 200). Čiara je zafarbená červenou farbou a má šírku 2 pixely.
Kreslenie obdĺžnika
Ďalej nakreslíme obdĺžnik. Musíte určiť horný - ľavý a spodný - pravý roh obdĺžnika.
# Nakreslite obdĺžnik draw.rectangle((300, 300, 400, 400), obrys='modrá', šírka=2)
Tu má obdĺžnik ľavý horný roh v(300, 300)a jeho pravý dolný roh na(400, 400). Obrys obdĺžnika je modrý a má šírku 2 pixely.
Kreslenie elipsy
Kreslenie elipsy je tiež jednoduché. Určíte ohraničujúci rámček elipsy (obdĺžnik, ktorý by ju obklopoval).
# Nakreslite elipsu draw.ellipse((500, 500, 600, 600), fill='green')
V tomto prípade je elipsa vyplnená zelenou farbou a je ohraničená obdĺžnikom s ľavým horným rohom(500, 500)a dolný - pravý roh(600, 600).
Kreslenie s väčšou kontrolou
Niekedy možno budete chcieť väčšiu kontrolu nad tým, ako vaše tvary vyzerajú. Môžete napríklad chcieť nakresliť tvar s prechodovou výplňou alebo prerušovaným obrysom.
Výplň gradientu
Na vytvorenie prechodovej výplne môžeme použiť slučku na kreslenie viacerých čiar s rôznymi farbami. Tu je príklad vytvorenia vertikálnej prechodovej výplne pre obdĺžnik:
from PIL import Image, ImageDraw image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image) # Nakreslite obdĺžnik so zvislou prechodovou výplňou start_color = (255, 0, 0) # Červená end_color = (0, 0, 255) # Modrá x1, y1, x2, 0, 02 výška = 1 y2 - y1 pre y v rozsahu (y1, y2): r = int(počiatočná_farba[0] + (koncová_farba[0] - počiatočná_farba[0]) * (y - y1) / výška) g = int(začiatočná_farba[1] + (koncová_farba[1] - počiatočná_farba[1]) * (y - y1) / výška) b = int(počiatočná_farba[2] + (koncová_farba[2] + (koncová_farba) start_color[2]) * (y - y1) / height) draw.line((x1, y, x2, y), fill=(r, g, b))
V tomto kóde najskôr definujeme počiatočnú a koncovú farbu prechodu. Potom prejdeme cez každú vodorovnú čiaru v obdĺžniku a vypočítame farbu pre túto čiaru na základe jej polohy.
Prerušovaný obrys
Kreslenie prerušovaného obrysu môže dodať vašim tvarom jedinečný vzhľad. Môžeme to dosiahnuť nakreslením série krátkych čiar s medzerami medzi nimi.
from PIL import Image, ImageDraw image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image) # Nakreslite obdĺžnik s prerušovaným obrysom x1, y1, x2, y2 = 300, 300, 400, 400 pomlčka_dĺžka = 5 medzera_dĺžka = 3_dĺžka, x2 dĺžka pre x v rozsahu draw.line((x, y1, x + dĺžka_pomlčky, y1), výplň='žltá', šírka=2) draw.line((x, y2, x + dĺžka_pomlčky, y2), výplň='žltá', šírka=2) pre y v rozsahu (y1, y2, dĺžka_pomlčky + dĺžka_medzery): draw.line((x1, y, x1, y +'ellow, width=2) fill='yellow, width=2) draw.line((x2, y, x2, y + dĺžka_pomlčky), výplň='žltá', šírka=2)
V tomto príklade definujeme dĺžku čiarok a medzier medzi nimi. Potom prevlečieme cez strany obdĺžnika a nakreslíme prerušované čiary.
Uloženie upraveného obrázka
Keď skončíme s kreslením tvarov na obrázok, musíme ho uložiť. Je to také jednoduché ako:
image.save('upravený_obrázok.jpg')
Stačí vymeniť'modified_image.jpg's názvom, ktorý chcete dať svojmu novému obrázku.
Pokročilé kreslenie tvarov
Prebrali sme základy, ale Pillow umožňuje oveľa pokročilejšie kreslenie tvarov. Môžete napríklad kresliť mnohouholníky s viacerými stranami.
from PIL import Image, ImageDraw image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image) # Kresliť polygón body = [(100, 100), (200, 150), (150, 250), (50, 200)] draw.polygon(body', fill='purple')
V tomto kóde definujeme zoznam bodov, ktoré tvoria vrcholy polygónu. Potom použijemepolygón()metóda nakresliť mnohouholník a vyplniť ho fialovou farbou.
Záver
Kreslenie tvarov na obrázok pomocou vankúša je zábavné a jednoduché. Či už pridávate jednoduché čiary a obdĺžniky, alebo vytvárate zložité polygóny s prechodovými výplňami, Pillow vám dáva možnosť premeniť vaše obrázky úžasnými spôsobmi.
Ak hľadáte kvalitné vankúše, nezabudnite si pozrieť naše produktyPrémiový mäkký hotelový vankúš do postele zo 100 % polyesteru s dutým vláknom,Hotelový vankúš vysokej kvality zo 100% polyesterového vlákna, aHotelový vankúš z bieleho husacieho peria vysokej kvality. Stále hľadáme nových partnerov a zákazníkov. Ak máte záujem o kúpu našich vankúšov vo veľkom, neváhajte nás kontaktovať kvôli diskusii o obstarávaní.
Referencie
- Oficiálna dokumentácia vankúša
- Oficiálna dokumentácia Pythonu
