PHP Watermark Yapımı

Kullanıcıların sisteme resim yüklediği PHP sistemlerde resim üzerine yazı ekleme, resim üzerine resim ekleme gibi watermark yapımı ile ilgili bilgiler yer almaktadır.

PHP resim işlemleri için GD eklentisinin aktif edilmesi gerekmektedir.

Resim üzerine yazı ekleme

Aşağıdaki örnekte imagecreatefromjpeg fonksiyonu ile jpeg formatında bir resim açılarak imagestring fonksiyonu ile resim üzerine yazı yazma işlemi gerçekleştirilmiştir.

<?php

header('content-type: image/jpeg');

$dosya = 'resim.jpg';
$yazi = 'YUSUFSEZER.COM.TR';

$mevcut_resim = imagecreatefromjpeg($dosya);
list($genislik, $yukseklik) = getimagesize($dosya);

$yazi_genislik = imagefontwidth(5) * strlen($yazi);
$yazi_yukseklik = imagefontheight(5);

$yazi_renk = imagecolorallocate($mevcut_resim, 255, 255, 255);
$yazi_sag = $genislik - $yazi_genislik;
$yazi_sol = $yukseklik - $yazi_yukseklik;

imagestring($mevcut_resim, 5, $yazi_sag, $yazi_sol, $yazi, $yazi_renk);

imagejpeg($mevcut_resim);

?>

Yazının resmin sağ alt köşesinde olması için çeşitli konum hesaplamaları yapılmıştır.

Böylece yazının uzunluğu değiştikçe her zaman yazının düzgün eklenmesi sağlanmıştır.

PHP watermark yapımı

PHP ile resim üzerine resim ekleme veya filigran ekleme olarak bilinen watermark yapımı iki resmin birleştirilmesinden ibarettir.

İşlem için imagecopymerge, imagecopy vb. resim birleştirme fonksiyonları kullanılabilir.

<?php

header('content-type: image/jpeg');

$dosya = 'resim.jpg';
$logo = 'logo.png';

$mevcut_resim = imagecreatefromjpeg($dosya);
$eklenen_resim = imagecreatefrompng($logo);
list($genislik, $yukseklik) = getimagesize($logo);

$sag = imagesx($mevcut_resim) - $genislik;
$sol = imagesy($mevcut_resim) - $yukseklik;

imagecopy($mevcut_resim, $eklenen_resim, $sag, $sol, 0, 0, $genislik, $yukseklik);
//imagecopymerge($mevcut_resim, $eklenen_resim, $sag, $sol, 0, 0, $genislik, $yukseklik, 50);

imagejpeg($mevcut_resim);

?>

Watermark yapımı sırasında iki adet resme ihtiyaç vardır.

Bu resimlerden birisi mevcut/yüklenen resim diğeri ise üzerine eklenecek logo/filigran resmidir.

Resimleri dosya formatına göre imagecreatefromjpeg, imagecreatefrompng, imagecreatefromgif vb. fonksiyon ile açıp resim birleştirme fonksiyonları ile birleştirilir.

Birleştirme sırasında eklenen resmin konumunun iyi hesaplanması faydalı olacaktır.

Eklenen resmi mevcut resmin ortasına eklemek için gerekli hesaplamanın

$sag = (imagesx($mevcut_resim) - $genislik) / 2;
$sol = (imagesy($mevcut_resim) - $yukseklik) / 2;

olarak düzeltilmesi yeterli olacaktır.

PHP Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!