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' успешно сгенерировано.")
|