PHP – Resim üzerine yazı yazma (Watermark) fonksiyonu


Egonomik müdavimlerinden gevv için yaklaşık 3 gün önce halledeceğime söz verdiğim fakat kodların sunucuda kalması ve internetimin 2 gündür kesik olması dolayısıyla bir türlü tamamlayamadığım resim upload/watermark scripti için kullandığım güzel bir fonksiyon (ne cümle kurarım be) Resim upload haricinde fonksiyonun tek başına da gerçekten faydalı olacağına inanıyorum, kısa bir süre sonra bahsettiğim upload scriptini de bu fonksiyonla tümleşik olarak buraya ekleyeceğim (upload edilen resim üzerine yazı yazmak için)

Watermark fonksiyonumuz oldukça basit, kodlar şu şekilde:

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
// Watermark fonksiyonu
function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile) {
list($width, $height) = getimagesize($SourceFile);
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($SourceFile);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);

$black = imagecolorallocate($image_p, 0, 0, 0); // Gölge rengi
$renk = imagecolorallocate($image_p, 255, 255, 255); // Yazı rengi

$font = 'fonts/corbelz.ttf'; // Kullanılacak font
$font_size = 14; // Yazı büyüklüğü

imagettftext($image_p, $font_size, 0, 17, 31, $black, $font, $WaterMarkText);
imagettftext($image_p, $font_size, 0, 16, 30, $renk, $font, $WaterMarkText);

if ($DestinationFile<>'') {
  imagejpeg ($image_p, $DestinationFile, 100); }

else {
  header('Content-Type: image/jpeg');
  imagejpeg($image_p, null, 100);   }

   imagedestroy($image);
   imagedestroy($image_p);

} // Fonksiyon sonu

Fonksiyonun kullanımı ise şu şekilde:

1
2
3
4
$SourceFile = "/home/kullanici/public_html/images/$filename"; // Kaynak dosya
$DestinationFile = "/home/kullanici/public_html/images/$filename"; // Yazılacak dosya (kaynak ile aynı olabilir)
$WaterMarkText = "Copyright Egonomik"; // Watermark metni
watermarkImage($SourceFile, $WaterMarkText, $DestinationFile);

Aslında denemedim ama kaynak ve hedef dosyaların yolunu belirtirken “/home/kullanici/public_html/images/” gibi uzun path belirtmek yerine dosya yolunu “images/” şeklinde de gösterebilirsiniz, sanıyorum çalışacaktır.

Corbelz fontunu buradan indirebilirsiniz (272 kb)

Facebook Yorumları

25 Yorum

  1. Çok teşekkürler Caner bende kesin bir sorun çıkmıştır diyordum 🙂  kodları hemen denedim fakat çalıştıramadım sorun sunucu yolundandır dedim her türlü açılımı denedim 😀  en son php ile tam yolu (C:\apache2triad\htdocs\up\uploads\corbelz.ttf)  öğrenip denedim yine olmadı beklemedeyim 🙂

  2. Caner
    Yazar

    @gevv bu tip kodları (özellikle resim işleyenleri) bazen localde çalıştıramayabilirsin,  yazılımlarda varsayılan olarak bazı modlar kapalı olarak gelebiliyor, sen kodları sunucuda denedin ve yine çalıştıramadın mı?

  3. Anladım ve hemen denedim fakat bir sürü hata verdi sanırım sunucudaki gd  modülü eski lokalde hiç hata vermemişti 🙂
     
    Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in
    Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]:
    vs. vs. 🙂  firma ile bir görüşeyim bakalım neler olacak 🙂

  4. Sorunun kaynağı benmişim 🙂  bu lokal ve gerçek sunucu bazen çok fark ediyor 🙂  kodları eklerken  fonksiyon kullanım kodlarını } işaretinden sonra eklemişim hata sebebi bu
     
     
    şimdi doğru ekledim sanırım hiç bir hata mesajı yok fakat yazı basmadı 🙂

  5. 😀  benim php işlerim hep ama hep böyle oluyor 2..3 hafta bazen 2..3 ay ara ara uğraşırım sonra garip bir şey olur ya çözülür ya güme gider
     
    birde phuploader özellikleri çok iyi şifreleme uzantı belirleme boyut belirleme vb.  bir sürü özelliği var belki diğer scriptlere daha kolay entegre olacak takıldım kaldım phupload`a 🙂
    bu arada elin çok hızlı 😀 hemen sistemi kurmuşsun

  6. Caner
    Yazar

    Bakma sen ben de php konusunda pek iyi değilim aslında, benim alanım daha çok görsel tasarımla ilgili ama işte ister istemez bulaşmak zorunda kalıyorsun 🙂

    phpupload dediğin eğer bir önce kodlarını gönderdiğin scriptse ben sana söyleyeyim o harbiden çok karışık bir şey, şu an üzerinde çalıştığımı kurcalarken daha iyi anlayacaksın eminim.

    Dosya boyutu ve her uzantıyı (resim için) destekleme olayı bu tasarladığım scriptte de var he ama sen ben sadece resim yükleme değil farklı formatlar da yükleyebilen bir şeyler istiyorum dersen o başka tabi, bu sadece resim yüklüyor. Şu anda da png/gif olayını hallediyorum.

  7. Evet belli oluyor bende aynı durumdayım görselleri seviyorum daha doğrusu o konuda daha yetenekli sayılırım 😀
     
    Ben bu sistemi forumda kullanmak isyiyorum resim eklemek için şimdi tam bir açıklama yapayım
     
    Neden phuploader ?
    phuploader de resim yükleme için işime gelen özellikler var ilk olarak yükleme yapılması için şifre girilmesi gerekiyor bu şifreyi php dosyasından belirliyorum yüklenecek dosya uzantıları ve boyutları kısıtlanabiliyor bir ya da daha fazla yükleme butonu ayarlanabiliyor
    resim yüklendikten sonra text link veriyor http://www.site/uploads/111.jpg  gibi  ben bunu düzenledim [img]www.site/uploads/111.jpg[/img]  şeklinde link veriyor bu şekilde forumda daha rahat kullanılabilecek
    durum bu Caner 🙂

  8. 😀  Çok teşekkürler işime yaramazmı 🙂 Caner süper çalışıyor bir bilsen deli gibi araştırdım 🙂 sağolsın ilgilendin vakit harcadın.
    son olarak yazının yerini nasıl değiştirebilirim sağ alt köşeye almak istiyorum
     
    birde kodlar arasında bulamadım gerçi bir kaç deneme yaptım ama olmadı resimin kalitesini belirleyen kodlar “DestinationFile, 100” bu 100  rakamımı acaba yazı basılan resim böyutu yüksek oluyor kalitesini ayarlayabilirmiyiz
     

  9. Caner
    Yazar

    Rica ederim ne demek iş gördüyse ne ala 🙂 Kodları sağ alta göre düzenledim, şurdan indirebilirsin:

    http://rapidshare.com/files/326698027/gevv.rar.html

     

    100 evet o kaliteyi ifade ediyor ve ben onu 50 ile denedim 67 kb’lık bir resmi 30 küsür kb olarak yükledi, normalde işe yarıyor yani (png için değil tabiki normalde gd png için bu olayı desteklemiyor mu yoksa başka bir kullanım biçimi mi var ben de bilmiyorum).

  10. musti

    Merhaba hocam,
     
    bu fonksiyonda takıldığım yer koordinat belirleme.şuan resmin sol üst köşesine yazıyor.bunu birde alta almak istiyorum.nerden yapmam gerekiyor?

  11. Caner
    Yazar

    @musti istediğini aşağıdaki ifadede bulunan rakamları (0, 17, 31) değiştirerek yapabilirsin:

    imagettftext($image_p, $font_size, 0, 17, 31, $black, $font, $WaterMarkText);
    imagettftext($image_p, $font_size, 0, 16, 30, $renk, $font, $WaterMarkText);

  12. Caner kardeşim 
     
    bu phpuploader  yüklediği resimlerin ismini değiştiriyor  sadece rakam yapıyor sağolsun bu sayede ortaslık karışmıyor  ama  resimin isminin sonuna rakam eklemesi sağlanabilirmi ?
     
    örneğin    resim-a.jpg  diye bir resim yükledik  bunu 1785405.jpg  yapıyor  bunun yerine resim-a-1785405.jpg  yapması sağlanabilir mi ?
     
    download: http://www.phphq.net/scripts.php?download=phUploader

  13. Caner
    Yazar

    217. satırdaki “// Randomize file names” yorumunun altında “$file_name[$i]=time()+rand(0,100000);” ifadesi var Burhan, bunu kafana göre değiştirerek dosyaya istediğin ismi verebilirsin. Orijinal dosya ismini şu ifade ediyor: $_FILES[‘file’][‘name’][$i]

  14. Caner kardeşim  denedim ama sürekli hata veriyor
     
     
     
    time()+rand(0,100000)


    time()  yükleme zamanını ekliyor  +rand(0,100000)  da  rastgele rakam üretiyor  bu sayede   19790247 vs…  gibi bir isim veriliyor    ben bu kodların içine  “”file_name””  kodunu nasıl ekleyeceğim ?

  15. Caner
    Yazar

    Şöyle yapmayı dene Burhan, önce dosya adını ve random ifadeyi $fname1, $fname2 gibi farklı farklı tanımla sonra alt satırda birleştir ($filename = “$fname1$fname2”; ) bu gösterdiğinde noktalama hatası var gibi.

  16. Tural

    Merhaba. Teşekkür ederim sabahtan arıyorum böyle kod. Fakat bu kodları hangi dosyaya eklemem lazım? resim yükleme sitem var. imgtize.com yardım edermisiniz?

  17. Ahmet ÖZALP

    Caner abi bunu yaptım süper şole bişi daha yapmak istiyorum resim üstüne yazı degilde resim üstüne resim ekleme? img html tagları vs koydum gene ekrana kodu text olark bıraktı takipdeyim konuyu

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