Untitled
unknown
plain_text
a year ago
4.0 kB
7
Indexable
from PIL import Image, ImageDraw, ImageFont import cv2 import numpy as np import time import random def blink_text_animation(animation_type=1): # Resim oluştur (3 kanallı) height = 600 width = 800 canvas = np.ones((height, width, 3), dtype="uint8") * 255 # 3 kanallı dizi # Renkler ve kalınlık color = (0, 0, 0) # Siyah renk thickness = 2 #blue_color = (0, 0, 0) # Mavi renk # Bilgisayarınızdaki bir yazı tipi dosyasını kullanın font_path = "arial.ttf" # Yazı tipi dosyasının yolunu buraya yazın font = ImageFont.truetype(font_path, 33) # Yazı tipi boyutu 32 # Metin konumlarını hesapla bbox = font.getbbox("Tevhid") # getbbox kullanın text_width = bbox[2] - bbox[0] text_height = bbox[3] - bbox[1] metin_konumlar = [] if animation_type == 1: # Animasyon 1: Ortadaki konumlar text_x1 = (23 + 250) // 2 - text_width // 2 text_y1 = 23 + text_height // 2 + 10 text_x2 = (300 + 500) // 2 - text_width // 2 text_y2 = 23 + text_height // 2 + 10 text_x3 = (550 + 773) // 2 - text_width // 2 text_y3 = 23 + text_height // 2 + 10 for i in range(0, 20, 2): metin_konumlar.append((text_x1, text_y1 + text_height i 1.1)) metin_konumlar.append((text_x2, text_y2 + text_height i 1.1)) metin_konumlar.append((text_x3, text_y3 + text_height i 1.1)) elif animation_type == 2: # Animasyon 2: Sütunlar halinde merkezleme sütun_konumlar = [23, 213, 415, 616] for i in range(0, 20, 2): for sütun_x in sütun_konumlar: metin_konumlar.append((sütun_x + ((sütun_x + 173) - sütun_x) // 2 - text_width // 2, 23 + text_height i 1.2)) elif animation_type == 3: # Animasyon 3: Sütunlar halinde merkezleme ve sola kaydırma sütun_konumlar = [23, 178, 323, 487, 643] for i in range(0, 20, 2): for sütun_x in sütun_konumlar: metin_konumlar.append((sütun_x + ((sütun_x + 156) - sütun_x) // 2 - text_width // 2 - 2, 23 + text_height i 1.2)) # Rastgele kelime seç rastgele_kelime = random.choice(kelimeler) # Yeni canvas oluştur (PIL için) canvas_pil = Image.fromarray(canvas) draw = ImageDraw.Draw(canvas_pil) # Tüm metinleri siyah renkte ekrana yaz for i in range(len(metin_konumlar)): draw.text(metin_konumlar[i], rastgele_kelime, fill=color, font=font) # Resmi göster (OpenCV ile) cv2.imshow("Canvas", np.array(canvas_pil)) # Kelimeleri kalınlaştırarak göster (bütün metni) for i in range(len(metin_konumlar)): # Yeni canvas oluştur (PIL için) canvas_pil = Image.fromarray(canvas) draw = ImageDraw.Draw(canvas_pil) # Tüm metinleri gri renkte ekrana yaz (önceki çizimi koru) for j in range(len(metin_konumlar)): draw.text(metin_konumlar[j], rastgele_kelime, fill=color, font=font) # Sadece i. metni kalınlaştırarak göster if i < len(metin_konumlar): draw.text(metin_konumlar[i], rastgele_kelime, fill=color, font=font, **{"stroke_width": 1}) # Kalınlığı 1 yap # Resmi göster (OpenCV ile) cv2.imshow("Canvas", np.array(canvas_pil)) # 'q' tuşuna basıldığında çıkış if cv2.waitKey(1) & 0xFF == ord('q'): cv2.destroyAllWindows() return time.sleep(0.5) # Daha yavaş çalışması için 0.1 saniye bekle # Pencereyi kapat cv2.destroyAllWindows() kelimeler = ["Tevhid", "İman", "Sünnet", "İhlas", "İslam", "Vakit", "Müslim", "VelaBera", "Kıyamet", "Cennet", "Gökyüzü", "Tarih", "Deniz", "Köşk", "Ahlak", "Saygı", "Merhamet", "Cesur", "Tağut", "Balık"] # Animasyon tipini seçin (1, 2 veya 3) animation_type = 2 blink_text_animation(animation_type)
Editor is loading...
Leave a Comment