from PIL import Image, ImageDraw, ImageFont, ImageFilter import random # Afiş boyutları width, height = 600, 900 # Koyu ve sisli bir arka plan oluşturmak için gradient fonksiyonu def create_gradient(width, height, start_color, end_color): base = Image.new('RGB', (width, height), start_color) top = Image.new('RGB', (width, height), end_color) mask = Image.new('L', (width, height)) mask_data = [] for y in range(height): # Yatay lineer gradient mask_data.extend([int(255 * (y / height))] * width) mask.putdata(mask_data) gradient = Image.composite(top, base, mask) return gradient # Sis efekti için beyaz yarı saydam noktalar def add_fog(image, density=0.07): draw = ImageDraw.Draw(image) for i in range(int(width * height * density)): x = random.randint(0, width) y = random.randint(0, height) # Noktaların opaklık düzeyi düşük draw.ellipse((x, y, x+3, y+3), fill=(255, 255, 255, random.randint(20, 50))) return image # Ana afiş oluşturma adımları background = create_gradient(width, height, (20, 20, 20), (50, 50, 50)) background = background.convert("RGBA") background = add_fog(background, density=0.015) # nispeten hafif sis # Afiş üzerine metin ekleme draw = ImageDraw.Draw(background) # Yazı tipleri (Eğer sisteminde .ttf dosyası varsa kullanabilirsin, yoksa default font kullanılacak) try: title_font = ImageFont.truetype("arial.ttf", 50) subtitle_font = ImageFont.truetype("arial.ttf", 25) info_font = ImageFont.truetype("arial.ttf", 20) except IOError: title_font = ImageFont.load_default() subtitle_font = ImageFont.load_default() info_font = ImageFont.load_default() # Metinleri tanımlayalım film_adi = "Sisli Gece" slogan = "Şeri cinayetler ve sen" oyuncular = "Danny Paul, Serdal Kaya, Linda Grow" yonetmen = "Yönetmen: Anna Liyasowa" # Film adı: Afişin üst kısmında, merkeze yakın yerleştir title_w, title_h = draw.textsize(film_adi, font=title_font) draw.text(((width - title_w) / 2, 50), film_adi, font=title_font, fill=(255, 255, 255)) # Slogan: Film adı altında, daha hafif ve esrarengiz bir şekilde slogan_w, slogan_h = draw.textsize(slogan, font=subtitle_font) draw.text(((width - slogan_w) / 2, 120), slogan, font=subtitle_font, fill=(200, 200, 200)) # Oyuncular: Afişin alt kısmına yerleştiriyoruz oyuncu_text = "Oyuncular: " + oyuncular oyuncu_w, oyuncu_h = draw.textsize(oyuncu_text, font=info_font) draw.text(((width - oyuncu_w) / 2, height - 150), oyuncu_text, font=info_font, fill=(230, 230, 230)) # Yönetmen bilgisi: Oyuncuların hemen üstüne veya altına ekleyebiliriz yonetmen_w, yonetmen_h = draw.textsize(yonetmen, font=info_font) draw.text(((width - yonetmen_w) / 2, height - 120), yonetmen, font=info_font, fill=(230, 230, 230)) # Ekstra kreatif dokunuş: Filmin merkezinde hafif bulanık bir daire veya sis efekti circle = Image.new('RGBA', (200, 200), (255, 255, 255, 0)) circle_draw = ImageDraw.Draw(circle) circle_draw.ellipse((0, 0, 200, 200), fill=(255, 255, 255, 40)) circle = circle.filter(ImageFilter.GaussianBlur(radius=10)) background.paste(circle, ((width - 200) // 2, (height - 200) // 2), circle) # Son dokunuş olarak; görselin üstüne ilave yaratıcı yazı efekti: hafif sisli kenarlar background = background.filter(ImageFilter.GaussianBlur(radius=1)) # Son resmi kaydet background.save("sisli_gece_afisi.png") background.show()
GİRİŞ |