PHP İle Resim Üzerine Yazı Yazma Scripti

Su üzerine yazı yazılmaz…” fekat PHP sağolsun pek bi hamarat pek bi işlevsel olduğundan bize en azından resim üzerine yazı yazma imkanı sağlıyor. Bu özellik nerelerde kullanılır, ne işe yarar derseniz en çok oyun oynamak ardından istatistik raporlarını bastırmak veya değişken reklam görselleri hazırlamak için kullanılıyor. Bir çoğunuzun yabancı sitelerde rastladığına eminim, altında “Hi! I’m from ISTANBUL…” yazan ve arkadaş aradığını söyleyen güzel hanım avatarlarına. Bizler pek tabi bu tip yanıltıcı kullanımları tasvip etmiyoruz (da kimin umrunda herkesin gözünü para hırsı bürümüş, eskiden istemsiz açılan popuplar baş belasıyken şimdi paso kullanıcıyı yanıltmaya yönelik yöntemler var, kapatma tuşuna bastığınızda sizi reklamveren siteye yönlendiren öğeler gibi).

Sözü fazla uzatmadan gelelim scriptimize. Ben bu olayı pek bi seviyorum, sizlerinde işini göreceğini umuyorum.
Scripti son derece basit ve anlaşılır tuttum, daha önce denediniz veya indirdiniz mi bilmiyorum fakat bu işi nedense hep en zor yoldan halletmeye çalışıyorlar, oysa olay sanıldığından basit.

Kodlarımız aşağıdaki gibi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
// PHP Resim Üzerine Yazı Yazma
// Herhangi bir resim üzerine yazı yazabilirsiniz.
// Caner ÖNCEL - http://www.egonomik.com

// Kullanım:
// Yazılmak istenen metni $_GET ile çağırıyoruz
// Örnek: resimyaz.php?text=Merhaba Dünya

$resim = "bg_resim.png"; // Üzerine yazılacak resmi seçiyoruz
$font = "fonts/segoepr.ttf"; // Font dosyası ve yolunu tanımlıyoruz
$golge = "true"; // Resme gölge eklemek istiyosanız "true" istemiyorsanız boş

$text = $_GET['text'];
if(empty($text)) {
$metin = "Metin yazin!"; }
else {
$metin = "$text"; }

header('Content-type: image/png');
$resim_yaz = imagecreatefrompng("$resim");

// Yazı ve gölgenin renk hex kodlarını belirliyoruz
$gri = imagecolorallocate($resim_yaz, 170, 170, 170);
$siyah = imagecolorallocate($resim_yaz, 0, 0, 0);

if ($golge == "true") {
imagettftext($resim_yaz, 16, 15, 59, 222, $gri, $font, $metin); }
imagettftext($resim_yaz, 16, 15, 58, 221, $siyah, $font, $metin);

imagepng($resim_yaz);
imagedestroy($resim_yaz);

?>

Dilerseniz scripte bir form ekleyerek yazrıdma işlemi gerçekleştirebilirsiniz

1
2
3
4
<form action="resimyaz.php" enctype="application/x-www-form-urlencoded" method="get">
<input name="text" size="15" type="text" style="border: 1px solid #666666" onclick="this.value=''"/>
<input type="submit" value="Resim yaz" />
</form>

Scripti çalıştırmak için yazdırmak istediğimiz metni “resimyaz.php?text=Yazi” şeklinde bir çağırma komutu gönderiyoruz. Ben burda Seogeo Print fontunu kullandım, siz isterseniz Türkçe karakterleri adam gibi gösteren farklı bir font kullanabilirsiniz.

Scriptin çalışan demosu:


İçerisinde hanım kızımızın resminin de bulunduğu script bileşenlerini buradan indirebilirsiniz 🙂

İlginizi Çekebilecek Diğer İçerikler

Facebook Yorumları

51 Yorum

  1. Merhaba eline koluna sağlık ben bu kodu aldım farklı jpg ve font kullandım ama bir türlü yapamadım.
    lafı uzatmayacağım siz acaba *** sitesi tarzında bir scipriti bana yazarmısınız, fiyatı ne olur? Teşekkürler.

  2. Caner
    Yazar

    Pek emin değilim ama bu işi bazı classlar yardımıyla yapabilirsiniz gibi, burdaki gibi kodlarla olacak iş değil ama 🙂

  3. Caner
    Yazar

    Selim’cim o tür bir sistem olup olmadığını bilemiyorum açıkcası araştırmak lazım, eve döndüğüm zaman bir bakayım 🙂

  4. Sagol ya gerek yok buldum ama şimdi bütün sitenin düzenini bozamam zaten table’yle çalışıyor ie’de farklı mozilla’da farklı opera’yı hiç sorma 🙂

  5. Caner
    Yazar

    @gevv Tabiki yapılabilir ve hatta bunu geçen seferki detaylı bilgilendirmen hatrına senin için yapacam, ama önce taşınmamız gereken bir server var biraz müsade istiyorum 🙂

  6. Teşekkürler caner bende biraz ilerleme kaydettim 🙂  ama  sorunsuz olurmu olmaz tabi 🙂
     
    ilk olarak yüklenen resime yazı yazılmıyor bir serim daha yüklenirse diğer resime yazı yazılıyor yani iki yükle 1 yazılsın 🙂
     
    ikinci sorun sadece jpg  resimlere yazı yazılıyor
     
    diğerleri ise yazıyı sağ alt köşeye almak ve yazının arka planını transparan yapmak şuan yazı siyah bant üzerinde resime ekleniyor 🙂
     
    yazı yazdırmak için kodları phupload.php dosyasına ekledim
     
    kodlar: http://shorttext.com/b0p5lgdlx8

  7. Caner
    Yazar

    @gevv ama şimdi olmadı ki e hani sen o diğer scriptle tümleşik istiyordun? Bu kodlar nere o diğer verdiklerin nere 🙂 Diğerinde çoklu dosya yükleniyor (zip, png vs.) bu kodlar ise sadece resim için, sen söylesene “bana sadece resim yükleyen ve o esnada üzerine watermark ekleyen script lazım” diye ben de kasıyorum kodları ayıklayacam şöyle yapacam böyle yapacam diye 🙂

    Şimdi ben sana bu işi gören bir script hazırlayayım ve hatta siteye de ekleyeyim madem 😉

     

  8. 🙂 teşekkürler caner tümleşik ayrı fark etmezdi bahsettiğim olayı phupload içine ekleyerek çalıştırdım 🙂 benim bilgim olmadığı için en uygun script phuploader oldu çünkü  detaylı ayarları var uzantı boyut kısıtlama şifreleme vb.  zaten resimde yüklüyor dedim 🙂  bu scripte ekleme ile çözmek istedim
     
    phuploads.php son hali 🙂
    http://shorttext.com/0cmj8hyyhn

  9. Arkadaşlar bunun türkçe sorununu nasıl çözdünüz. Her yolu denedim nerdeyse ama yinde de Türkçe bazı karakterlerde sorun çıkarıyor

  10. informatique

    merhaba acaba bunu nasıl çoklayabilirim birden fazla yazı girmek istiyorum resime ama beceremedim..

  11. Caner
    Yazar

    Önce kaç tane yazı girmek istiyorsanız formda o sayıda text inputu oluşturun, isimleri text2, text3 olsun diyelim, ardından scriptin içinden değişkenleri tanımlayın:

     

    $metin2 = $_GET[‘text2’];
    $metin3 = $_GET[‘text3’];

     

    gibi, daha sonra imagettftext($resim_yaz, 16, 15, 58, 221, $siyah, $font, $metin); satırını girmek istediğiniz metin sayısı kadar kopyalayıp çoğaltın ve $metin yazan yerlere yeni tanımladığınız $metin2, $metin3 değişkenlerini girin. 58, 221 gibi rakamları değiştirerekte metnin resim üzerindeki koordinatlarını ayarlayın.

  12. informatique

    olmadı sanırım..
    adres barda nasıl gözükmesi gerekiyor?
    resimyaz.php?text=yazı?text1=yazı 1
    gibi mi?

  13. Caner
    Yazar

    Aslında sizin için detaylı bir cevap hazırlamıştım ama sitede oluşan teknik bir hata yüzünden gümbürtüye gitti, neyse sonuç olarak çalıştıysa ne sorun yok 🙂

  14. Osman

    Türkçe karakter desteği olan bir font kullanıyorum. Fakat yine de Türkçe sorununu çözebilmiş değilim. Yardımcı olabilirseniz sevinirim.
    Ayrıca böyle güzel bir şeyi bizle paylaştığınız ve açıkladığınız için kendi adıma teşekkür ederim.

  15. Merhaba
    Bu scriptteki arkaplan resminin yerine başka bir resim koyduğumda hata veriyor.
    Yardımcı olabilir misiniz ?
    Birde o resimdeki metnin bulunacağı konumu nasıl belirleyebilriz ?

  16. Caner
    Yazar

    Tabiki olabilir. $font değişkenini $font = $_GET[‘font’]; şeklinde tanımladıktan sonra url’yi ?text=yazi&font=fonts/herhangifont.ttf şeklinde çağırarak bu istediğini yapabilirsin.

  17. kamaleddin

    Teşekkür ederim
    Galiba doğru anlatamadım benim istediyim siteye siren üyelerin bunu yapa bilmesiyi.

  18. Caner Hocam harika açıklamalar olmuş. Diğer arkadaşlarada katılımlarından dolayı teşekkürler. Php adına harika çalışma olmuş..

  19. merhaba hocam ben bunu hallettim tamam ama kendi istediğim yazıyı nasıl yazdırabilirim ve birden çok resim nasıl ekleyebilirim bknz : http://www.erenfazlioglu.com/signyap/ burdaki sing yapma scriptide bu kodu kullanmış ama bunda istediğimiz yazıyı yazdırabiliyoruz birde nasıl yazıyı istediğimiz yere yazdıracağız ?

  20. Mert Kahveci

    Peki bu resmin üzerine yazılanlar kaydoluyor mu Caner abi ? Sonuçta rezil olabilecek bir ton adam tanıyorum 😀

  21. MUHAMMET

    Merhaba egonomik com scripti kullanıyorum çok güzel ama resmi değiştirdim fakat yazıya yon nasıl verebılırım tabela resmi koydum tabelada sağ ust tasafta birde düz bunu nasıl ayarlayabiliriz

Uyarı: Yorumlarda link kullanmayınız. Link içeren yorumlar otomatik olarak spam kabul edilmektedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir