Python dasturlash tilida rasmga matn yozish va rasmdan matnni ajratib olish.

1-qism. Rasmga matn yozish.

Assalomu alaykum!

Bugun biz siz bilan Pythonning ommabop “Pillow” kutubxonasidan foydalangan holda rasmga matn joylashtiruvchi dastur yaratamiz. Eng qizig’i shundaki dastur kodi 10 qatordan iborat bo’ladi :)!


Demak boshladik!

Birinchi bo’lib, so’z kiritilganda o’zgartiriladigan rasmni yaratamiz (buni aynan kodda bajarish ham
mumkin. Lekin bunga ko’p ham e’tibor bermasak ham bo’ladi. Rasmni va boshqa fayllarni maqola
oxiridagi link orqali yuklab olishingiz mumkin):

Agar “Pillow” kutubxonasi kompyuteringizda o’rnatilmagan bo’lsa, avval o’rnatish lozim. Buni esa terminalga ushbu buyruqni kiritish orqali o’rnatib olamiz:

pip install pillow


Endi rasm joylashgan papkada yangi “main.py” nomli fayl yaratamiz.

Misol uchun sizning matn yozilish kerak bo’lgan rasm faylingiz “Rasm” nomli papkada, demak “main.py“. Unga birinchi bo’lib kodda foydalanadigan kutubxonamizdagi funksiyalarni import qilib olamiz:

Pillow” kutubxonasidan hozirda kerak bo’ladigan”Image“, “ImageDraw” va “ImageFont” “class”larni import qilamiz.

Random” kutubxonasidan esa “randint” funksiyasini import qilib olamiz.

Random“- bu kutubxonani biz yangi yaratiladigan rasmning nomini qo’yish uchun foydalanamiz.

from PIL import Image, ImageDraw, ImageFont
from random import randint


Kutubxonalarni import qilib bo’lgach, turli amallar olib boriladigan rasmni dasturga yuklash kodini yozamiz.

Deylik biz faylni saqlayotgan papkamizda “Image.png” nomli rasm bor.

img = Image.open('Image.png')

Rasmni o’zgartirish uchun “ImageDraw” “class”dan foydalanamiz va uni “draw”nomli o’zgaruvchiga
tenglab olamiz va undan “Draw”nomli funksiyani chqairib talabqilingan argument sifatida “img” nomli o’zgaruvchimizga yuklangan rasmimizni kiritib qo’yamiz.

draw = ImageDraw.Draw(img)


Rasmda yoziladigan matnning “shriftini” va harflarning o’lchamini “name” nomli o’zgaruvchiga “ImageFont” klasidagi “truetype” nomli funksiya argumentlarini to’ldirish orqali kiritamiz.

  • Funksiya talab qiluvchi argumentlat:
  • shrift” – “string” ma’lumot turi sifatida,o’lcham
  • size” so’zidan keyin barobar ishorasi va “int“,”float” ma’lumot turi sifatida.
name = ImageFont.truetype('Gabriola.ttf', size=55)


Rasmda yoziladigan matnni foydalanuvchi kiritadi. Uni “text” nomli o’zgaruvchimizga “string” ma’lumot turi sifatida joylashtiramiz.

text = str(input("Rasmga yozilishi kerak bo'lgan matnni kiriting: "))


Kiritilgan matnni rasmning markazidan joylashtiramiz.

draw.text((((600 - len(text) * 20) / 2), 280), text, font=name)

Yuqoridagi kodlardan keyin “img” nomli o’zgaruvchida belgilangan rasm markazida kiritilgan matn yozilgan holga keldi.

Endi faqatgina rasmdagi o’zgartirishlardan so’ng saqlash qoldi.

img.save(f'{randint(0,100)}.png')

Ko’rib turganingizdek biz rasmni saqlab oldik.Siz bilasizki bir papkada ikkta bir xil nomli va bir xil formatli fayllar bo’lishi mumkin emas.

Shuning uchun faylni saqlashda uning nomini 0 dan 100 gacha bo’lgan tasodifiy son nomi bilan saqlab olyabmiz.

Quyidagi kodni esa yozish shart emas, lekin dastur yakunida natijani ko’rish oson bo’lishi uchun yozib qo’yamiz.

img.show()


Mana dastur tayyor bo’ldi!

To’liq kod:

from PIL import Image, ImageDraw, ImageFont
from random import randint
img = Image.open('Image.png')
draw = ImageDraw.Draw(img)
name = ImageFont.truetype('Gabriola.ttf', size=55)
text = str(input("Rasmga yozilishi kerak bo'lgan matnni kiriting: "))
draw.text((((600 - len(text) * 20) / 2), 280), text, font=name)
img.save(f'{randint(0,100)}.png')
img.show()

Endi undan foydalanish mumkin.


Albatta bu dasturning bir o’zidan foydalanish unchalik foydalimas ammo, o’z fikrlaringizni qo’shsangiz, ajoyib dastur chiqadi!

Masalan, bu dastur asosida telegram bot yaratish ham mumkin.

Shunday qilib, 1-qsim tugadi)

2-qism bu yerda [//////////////////]

Mavzuga oid maqolalar