Как да нарисувате фигури върху изображение с Pillow?
Oct 28, 2025
Остави съобщение
Здравейте! Като доставчик на възглавници, аз не се занимавам само с продажбата на възглавници с горен прорезПървокласна мека 100% полиестерна възглавница за легло с пълнеж от кухи влакна,Хотелска висококачествена възглавница от 100% полиестерни влакна, иХотелска висококачествена възглавница с бял гъши пух. Имам и малко умение да обработвам изображения. Днес ще споделя с вас как да рисувате фигури върху изображение с помощта на Pillow, супер удобна библиотека на Python.
Какво е възглавница?
Първо, нека поговорим какво е възглавница. Pillow е разклонение на Python Imaging Library (PIL). Той е лесен за използване и предоставя куп функции за отваряне, манипулиране и запазване на различни файлови формати на изображения. Независимо дали сте любител, който иска да добави страхотни ефекти към снимките си от ваканцията, или професионален дизайнер, работещ по проект, Pillow може да бъде най-добрият ви приятел.
Монтаж на възглавница
Преди да започнем да рисуваме фигури, трябва да инсталираме възглавницата. Ако използвате pip (което е най-често срещаният начин за инсталиране на пакети на Python), просто отворете командния ред или терминала и въведете:
възглавница за инсталиране на pip
това е! За нула време ще имате възглавницата готова за работа.
Рисуване на основни фигури
Да започнем с основите. Ще нарисуваме няколко прости фигури върху изображение. Първо, трябва да импортираме необходимите модули и да отворим изображение.
от PIL import Image, ImageDraw # Отваряне на изображение image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image)
В кода по-горе първо импортирамеИзображениеиImageDrawкласове от библиотека Pillow. След това отваряме файл с изображение (трябва да замените'вашето_изображение.jpg'с действителния път до вашето изображение). TheImageDraw.Draw()създава обект, който можем да използваме, за да рисуваме върху изображението.


Рисуване на линия
Начертаването на линия е супер лесно. Просто трябва да посочите началната и крайната точка на линията, заедно с цвета и ширината.
# Начертайте линия draw.line((100, 100, 200, 200), fill='red', width=2)
В този пример линията започва от точката(100, 100)и завършва на(200, 200). Линията е оцветена в червено и е с ширина 2 пиксела.
Рисуване на правоъгълник
След това нека начертаем правоъгълник. Трябва да посочите горния ляв и долния десен ъгъл на правоъгълника.
# Начертайте правоъгълник draw.rectangle((300, 300, 400, 400), outline='blue', width=2)
Тук горният ляв ъгъл на правоъгълника е в(300, 300)и долния му - десен ъгъл при(400, 400). Контурът на правоъгълника е син и има ширина 2 пиксела.
Рисуване на елипса
Начертаването на елипса също е лесно. Вие определяте ограничаващата рамка на елипсата (правоъгълника, който ще я огражда).
# Начертайте елипса draw.ellipse((500, 500, 600, 600), fill='green')
В този случай елипсата е запълнена със зелен цвят и е ограничена от правоъгълника с горен ляв ъгъл(500, 500)и долен десен ъгъл(600, 600).
Рисуване с повече контрол
Понякога може да искате повече контрол върху това как изглеждат формите ви. Например, може да искате да нарисувате фигура с градиентно запълване или пунктиран контур.
Градиентно запълване
За да създадем градиентно запълване, можем да използваме цикъл, за да начертаем множество линии с различни цветове. Ето пример за създаване на запълване с вертикален градиент за правоъгълник:
от PIL import Image, ImageDraw image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image) # Начертайте правоъгълник с вертикален градиент запълване start_color = (255, 0, 0) # Red end_color = (0, 0, 255) # Blue x1, y1, x2, y2 = 100, 100, 200, 200 височина = y2 - y1 за y в обхват (y1, y2): r = int(start_color[0] + (end_color[0] - start_color[0]) * (y - y1) / височина) g = int(start_color[1] + (end_color[1] - start_color[1]) * (y - y1) / height) b = int(start_color[2] + (end_color[2] - start_color[2]) * (y - y1) / височина) draw.line((x1, y, x2, y), fill=(r, g, b))
В този код първо дефинираме началните и крайните цветове на градиента. След това преминаваме през всяка хоризонтална линия в рамките на правоъгълника и изчисляваме цвета за тази линия въз основа на нейната позиция.
Прекъснат контур
Рисуването на пунктиран контур може да добави уникален вид към вашите форми. Можем да постигнем това, като начертаем поредица от къси линии с празнини между тях.
от PIL import Image, ImageDraw image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image) # Начертайте правоъгълник с пунктиран контур x1, y1, x2, y2 = 300, 300, 400, 400 dash_length = 5 gap_length = 3 за x в диапазон (x1, x2, dash_length + gap_length): draw.line((x, y1, x + dash_length, y1), fill='yellow', width=2) draw.line((x, y2, x + dash_length, y2), fill='yellow', width=2) за y в диапазон (y1, y2, dash_length + gap_length): draw.line((x1, y, x1, y + dash_length), fill='yellow', width=2) draw.line((x2, y, x2, y + тире_дължина), fill='yellow', width=2)
В този пример ние определяме дължината на тиретата и празнините между тях. След това правим цикъл през страните на правоъгълника и начертаваме пунктираните линии.
Запазване на модифицираното изображение
След като приключим с рисуването на фигури върху изображението, трябва да го запазим. Толкова е просто като:
image.save('modified_image.jpg')
Просто сменете'modified_image.jpg'с името, което искате да дадете на новото си изображение.
Разширено чертане на фигури
Покрихме основите, но Pillow позволява много по-усъвършенствано рисуване на форми. Например, можете да начертаете многоъгълници с множество страни.
от PIL import Image, ImageDraw image = Image.open('your_image.jpg') draw = ImageDraw.Draw(image) # Начертайте многоъгълник точки = [(100, 100), (200, 150), (150, 250), (50, 200)] draw.polygon(points, fill='purple')
В този код ние дефинираме списък от точки, които съставят върховете на многоъгълника. След това използвамемногоъгълник()метод за начертаване на многоъгълника и запълването му с лилав цвят.
Заключение
Рисуването на фигури върху изображение с Pillow е забавно и лесно. Независимо дали добавяте прости линии и правоъгълници или създавате сложни многоъгълници с градиентни запълвания, Pillow ви дава силата да трансформирате вашите изображения по невероятни начини.
Ако сте на пазара за висококачествени възглавници, не забравяйте да разгледате нашите продукти катоПървокласна мека 100% полиестерна възглавница за легло с пълнеж от кухи влакна,Хотелска висококачествена възглавница от 100% полиестерни влакна, иХотелска висококачествена възглавница с бял гъши пух. Ние винаги търсим нови партньори и клиенти. Ако се интересувате от закупуването на нашите възглавници на едро, не се колебайте да се свържете с нас за обсъждане на поръчката.
Референции
- Официална документация за възглавница
- Официална документация на Python
