Untitled
unknown
plain_text
a year ago
4.0 kB
12
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