Blok_Okuma
unknown
plain_text
a month ago
2.9 kB
3
Indexable
Never
import random from PIL import Image, ImageDraw, ImageFont import cv2 import numpy as np def blok_okuma(zaman, paragraf, kelime_sayisi): try: # UTF-8 kodlaması ile dosyayı aç ve oku with open(paragraf, 'r', encoding='utf-8') as file: # Dosyanın tamamını okuyup paragraflara bölelim p_liste = file.read().split('\n\n') # Paragraf listesinin boş olup olmadığını kontrol et if not p_liste: print("Dosya boş veya okunamadı.") return # Rastgele bir paragraf seçelim sayi = random.randint(0, len(p_liste) - 1) # Seçilen paragrafı kelimelere bölelim kelimeler = p_liste[sayi].split() # Her seferde kelime_sayisi kadar kelimeyi gruplar halinde alalım for i in range(0, len(kelimeler), kelime_sayisi): grup = kelimeler[i:i + kelime_sayisi] # Belirtilen sayıda kelime al # Grupları birleştirip tek satır haline getirelim kelime_grubu = ' '.join(grup) # Boş bir görüntü oluşturalım (150x600 boyutunda) - PIL ile img = Image.new('RGB', (600, 150), color='white') # Bir yazı tipi seçelim, bu bilgisayarda mevcut bir font dosyası olmalıdır try: font = ImageFont.truetype("arial.ttf", 24) # Arial fontunu kullan except IOError: font = ImageFont.load_default() # Font bulunamazsa varsayılan fontu kullan draw = ImageDraw.Draw(img) # Metin boyutlarını hesaplayalım bbox = draw.textbbox((0, 0), kelime_grubu, font=font) text_width = bbox[2] - bbox[0] # Genişlik text_height = bbox[3] - bbox[1] # Yükseklik # Metni görüntünün ortasına yerleştirmek için koordinatlar x = (img.width - text_width) // 2 y = (img.height - text_height) // 2 # Kelime grubunu ortalayarak görüntüye yazalım draw.text((x, y), kelime_grubu, font=font, fill='black') # PIL görüntüsünü OpenCV formatına çevirelim img = np.array(img) img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) # Görüntüyü göster cv2.imshow('Kelime Grubu', img) cv2.waitKey(zaman) # Bekleme süresi (milisaniye) cv2.destroyAllWindows() # Pencereleri kapat except Exception as e: print(f"Dosya okuma hatası: {e}") blok_okuma(500, 'biyoloji.txt', 2)
Leave a Comment