Untitled

 avatar
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