Create service
Browse files
service
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from PIL import Image, ImageDraw, ImageFilter
|
2 |
+
import random
|
3 |
+
|
4 |
+
def generate_portrait(width=512, height=512):
|
5 |
+
"""Генерирует портрет в стиле цифровой живописи."""
|
6 |
+
|
7 |
+
# Создаем холст
|
8 |
+
img = Image.new("RGB", (width, height), "white")
|
9 |
+
draw = ImageDraw.Draw(img)
|
10 |
+
|
11 |
+
# Генерируем основные черты лица
|
12 |
+
face_color = (random.randint(200, 255), random.randint(180, 230), random.randint(160, 210))
|
13 |
+
draw.ellipse((width // 4, height // 4, width * 3 // 4, height * 3 // 4), fill=face_color)
|
14 |
+
|
15 |
+
# Генерируем глаза
|
16 |
+
eye_color = (255, 0, 0) # Красные глаза, как на референсе
|
17 |
+
eye_size = width // 10
|
18 |
+
draw.ellipse((width // 3 - eye_size, height // 3 - eye_size, width // 3 + eye_size, height // 3 + eye_size), fill=eye_color)
|
19 |
+
draw.ellipse((width * 2 // 3 - eye_size, height // 3 - eye_size, width * 2 // 3 + eye_size, height // 3 + eye_size), fill=eye_color)
|
20 |
+
|
21 |
+
# Генерируем губы
|
22 |
+
lip_color = (200, 0, 0) # Темно-красные губы
|
23 |
+
draw.polygon([(width // 3, height * 3 // 5), (width * 2 // 3, height * 3 // 5), (width * 5 // 8, height * 3 // 4), (width * 3 // 8, height * 3 // 4)], fill=lip_color)
|
24 |
+
|
25 |
+
# Добавляем эффект размытия для создания эффекта цифровой живописи
|
26 |
+
img = img.filter(ImageFilter.GaussianBlur(radius=5))
|
27 |
+
|
28 |
+
return img
|
29 |
+
|
30 |
+
# Генерируем и сохраняем изображение
|
31 |
+
portrait = generate_portrait()
|
32 |
+
portrait.save("portrait.png")
|
33 |
+
|
34 |
+
print("Изображение 'portrait.png' успешно сгенерировано.")
|