Python ile Resim Üzerine Yazı Yazma
Python ile grafik işleme yapabilmek için PIL (Python Imaging Library) kütüphanesini kullanıyoruz. Kütüphanenin işletim sistemi ve Python sürümümüze uygun olan versiyonunu indirip kuralım. Kütüphanenin doğru bir şekilde kurulup kurulmadığını test etmek için Python komut satırına şunu yazalım:
import PIL
Herhangi bir hata vermediyse kütüphane yüklenmiştir. Şimdi işlem yapmaya başlayabiliriz.
from PIL import Image
resim = Image.open("test.jpg")
print resim.size
(241,172)

Burada önce PIL içerisinden Image nesnesini çağırdık ve open fonksiyonuyla test.jpg resmini açtık. Resmin boyutlarını öğrenmek için size özelliğine bakarız. Image nesnesiyle kullanacağımız diğer metotlar için şunu yazabiliriz:
dir(resim)
Resim üzerine bir yazı yazmak için de ImageDraw nesnesini kullanacağız. Bu yazının fontunu belirlemek için ImageFont nesnesini kullanacağız.
from PIL import Image,ImageFont,ImageDraw
resim = Image.open("test.jpg")
f = ImageFont.truetype("arial.ttf", 35)
ciz = ImageDraw.Draw(resim)
ciz.text((10,10), "ftoptas.com", font=f, fill="#0C3446")
resim.save("test2.jpg")

Önce yazacağımız yazının fontunu arial ve font büyüklüğünü de 20 olarak belirledik. Ardından 4. satırda açtığımız resmi kullanarak bir Draw nesnesi oluÅŸturduk. Bu nesnenin text metodunu kullanarak (10,10) koordinatına “#0C3446″ renginde ve ayarladığımız fontta yazı yazmış olduk. text metodunun parametreleri ÅŸu ÅŸekildedir:
text((x,y), “yazılacak metin”, font, renk)
Son olarak yeni resmi test2.jpg olarak kaydediyoruz.
Yazıya biraz gölge efekti vermek için yazıyı iki defa farklı renkte ve x-y koordinatlarının 2 piksel arttırılmış olarak kaydedelim.
from PIL import Image,ImageFont,ImageDraw
resim = Image.open("test.jpg")
f = ImageFont.truetype("arial.ttf", 35)
ciz = ImageDraw.Draw(resim)
ciz.text((8,8), "ftoptas.com", font=f, fill="#3EA3D1")
ciz.text((10,10), "ftoptas.com", font=f, fill="#0C3446")
resim.save("test3.jpg")

Yazının arkasına açık renkli bir diktörtgen çizip yazının okunabilirliğini arttırabiliriz.
from PIL import Image,ImageFont,ImageDraw
resim = Image.open("test.jpg")
f = ImageFont.truetype("arial.ttf", 35)
ciz = ImageDraw.Draw(resim)
ciz.rectangle(((8,8),(190,48)),fill="#ffffff")
ciz.text((8,8), "ftoptas.com", font=f, fill="#3EA3D1")
ciz.text((10,10), "ftoptas.com", font=f, fill="#0C3446")
resim.save("test4.jpg")

Draw nesnesinin rectangle metodunu kullanarak belirtiğimiz koordinatlara bir diktörtgen oluşturduk. Yazıya bir açı vermek için şu yöntemi kullanabiliriz:
from PIL import Image,ImageFont,ImageDraw
resim = Image.open("test.jpg")
f = ImageFont.truetype("arial.ttf", 20)
yazi = Image.new('RGB',(120,50))
ciz = ImageDraw.Draw(yazi)
ciz.text((8,8), "ftoptas.com", font=f, fill="#ffffff")
yazi = yazi.rotate(15)
resim.paste(yazi,(20,20))
resim.save("test5.jpg")

RGB formatında 120×50 piksel boyutunda yeni bir Image oluÅŸturup yazıyı onun içine yazdık. Ardından içinde yazı olan resme 15 derece açı verip eski resmin üzerinde yapıştırdık.



