ποΈ ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π½Π° Python: ΠΏΡΠΎΡΡΡΠ΅ ΡΠ°Π³ΠΈ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Python?
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Pillow. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
from PIL import Image
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΈ ΡΠ²Π΅ΡΠΎΠΌ ΡΠΎΠ½Π°
image = Image.new("RGB", (300, 200), (255, 255, 255))
# ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
image.show()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Pillow, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ Python Imaging Library (PIL) ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΊΠ»Π°ΡΡ Image ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ Pillow. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π½ΠΎΠ²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Image.new(). ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°: ΡΠ΅ΠΆΠΈΠΌ, ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈ ΡΠ²Π΅Ρ ΡΠΎΠ½Π°. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ RGB Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ 300x200 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΈ Π±Π΅Π»ΡΠΌ ΡΠΎΠ½ΠΎΠΌ (255, 255, 255).
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ show(), ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python
ΠΡΠΈΠ²Π΅Ρ! Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python. Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ PIL
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Python Imaging Library (PIL). ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΡ, Π½Π°Π½ΠΎΡΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ PIL, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ pip, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Python. ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install pillow
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Python, ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ PIL.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Image Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ PIL:
from PIL import Image
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
image = Image.new('RGB', (300, 200), 'white')
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΡΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 300x200 ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Ρ Π±Π΅Π»ΡΠΌ ΡΠΎΠ½ΠΎΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈ ΡΠ²Π΅Ρ ΡΠΎΠ½Π°, ΡΠΊΠ°Π·Π°Π² Π΄ΡΡΠ³ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π½Π°ΡΠ΅ΠΉ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ImageDraw, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠ³ΡΡΡ ΠΈ ΡΠ΅ΠΊΡΡ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ.
from PIL import Image, ImageDraw
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
image = Image.new('RGB', (300, 200), 'white')
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ImageDraw
draw = ImageDraw.Draw(image)
# Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
draw.rectangle([(50, 50), (200, 150)], outline='red', width=2)
# Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ°
draw.text((100, 100), 'ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!', fill='blue')
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Π½Π° Π½Π°ΡΠ΅ΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ Π»Π΅Π²ΠΎΠ³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠ³Π»ΠΎΠ². ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ "ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!" Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ (100, 100).
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
ΠΠΎΠ³Π΄Π° ΠΌΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π΅ Π½Π° ΠΆΠ΅ΡΡΠΊΠΎΠΌ Π΄ΠΈΡΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° save:
from PIL import Image, ImageDraw
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
image = Image.new('RGB', (300, 200), 'white')
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ImageDraw
draw = ImageDraw.Draw(image)
# Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°
draw.rectangle([(50, 50), (200, 150)], outline='red', width=2)
# Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ°
draw.text((100, 100), 'ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!', fill='blue')
# Π‘ΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
image.save('my_image.png')
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ Π½Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ "my_image.png". ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠΎ "my_image.png".
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python! ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°Π³ΠΈ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ PIL, ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΡΡΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π½Π΅ΠΉ ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ. Π£Π΄Π°ΡΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΡΠ²ΠΎΡΡΠ΅ΡΡΠ²Π΅!