23 Feb

Resim üzerine yazılan yazının saydamlığını ayarlamak

Uzun bir ara oldu, planlarıma göre çok önceden yazacaktım. Burada konuya giriş yapmış ve son olarak da , resim üzerine yazılan yazının saydamlığını nasıl ayarlayacağıma değineceğimi söylemiştim.
Aslına bakarsanız gerçekten çok kolay bir şekilde bunu yapmak mümkün. Böyle bir şeye ihtiyaç duyduğumda, araştırma yaparken çok farklı örnekler ile karşılaştım. Ve bunların çoğu karmaşık yollar ile anlatılmıştı. Hiçbiri isteklerime uymuyordu. Sadece resim üzerine bir yazı yazacaktım ve bu yazının saydamlığını istediğim gibi ayarlayabilmeliydim.
Ve en sonunda çözümü (aslında ilk bakmam gereken yerde) php manualde gördüm.
Önceki örneğimizden devam edelim :

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
// resmimizi oluşturuyoruz
$resim=imagecreatetruecolor(200,50);
// resmimizi boyayacağımız rengi oluşturuyoruz
$renk = imagecolorallocate($resim, 176,196,222);
// resmimizi boyuyoruz
imagefill($resim, 0,0, $renk);
// yazı rengimizi belirtiyoruz

             //$yaziRengi = imagecolorallocate($resim, 0,0,0);
// eski örneğimizdeki yazı rengi bu biçimdeydi
// sadece bu satırı aşağıdaki gibi değiştirmek bizim için yeterli
$yaziRengi = imagecolorallocatealpha($resim, 0,0,0,100);
/*
 * burada ek olarak gelen 100 parametresi saydam bir renk
 * oluşturmaya yarıyor. Bu değer küçüldükçe saydamlık azalır,
 * bu değer büyüdükçe saydamlık artar. 127 son değerdir ve
 * bu değeri girdiğinizde yazımızı veya her ne için kullanacaksak
 * o nesne tamamen saydam olacaktır
 */

// yazımızı resmin üstüne yazıyoruz
imagestring($resim, 5, 20, 50/3, 'www.ersindogan.com', $yaziRengi);

// tarayıcıya dosyamızı algılaması için direktif veriyoruz
header('Content-type: image/png');
// ve sonucu çıktılıyoruz
imagepng($resim);
imagedestroy($resim);

Evet ,işte bu kadar. Sadece farklı bir fonksiyon kullanıp bir parametre ekleyerek bu işlemi kolaylıkla gerçekleştirebiliriz. Hazır yeri gelmişken, konu ile alakalı bir fonksyiondan daha bahsederek bitireyim.

imagefttext, bu fonksiyon imagestring gibi resim üzerine yazı yazmamızı sağlar. Ama ekstra bir özelliği daha var, o da resim üzerine istediğimiz bir font (FreeType 2 tipinde) ile yazdırabilmesidir.

array imagefttext ( resource $resim , float $boyut , float $açı , int $x , int $y , int $renk , string $yazıtipi , string $metin [, array $ekbilgi ] )

Fonksiyonun aldığı parametre yukarıdaki gibi, burda dikkat etmeniz gereken yazı tipini verirken, fontun yüklü olduğu tam yolu belirtmenizdir. Fontu bulamaz ise resim üzerine yazı yazılmayacaktır.

31 Jan

PHP ile resim üstüne yazı yazdırmak

Uzun zamandır yazmıyorum bloguma, bugün bunun acısını çıkarırcasına , yazmak isteyip de, vakit bulamadığım konular üzerine yazıyorum 🙂
Bildiğiniz veya artık bundan sonra bileceğiniz gibi, php ile resim işlemleri de yapabilmekteyiz. PHP nin resim işlemleri için birkaç eklentisi var. Fakat ben örneğimde GD kütüphanesini baz alacağım.
Burdaki amacımız elimizde bulunan bir resim üzerine istediğimiz bir yazıyı yazdırabilmek. Bunu yapabilmek için GD eklentimizi kurmamız gerekir. GD kütüphanesini kurduktan sonra yazacağımız birkaç satırlık kod ile rahatlıkla istediğimiz şeyi gerçekleştirebileceğiz :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// resmimizi oluşturuyoruz
$resim=imagecreatetruecolor(200,50);
// resmimizi boyayacağımız rengi oluşturuyoruz
$renk = imagecolorallocate($resim, 176,196,222);
// resmimizi boyuyoruz
imagefill($resim, 0,0, $renk);
// yazı rengimizi belirtiyoruz
$yaziRengi = imagecolorallocate($resim, 0,0,0);
// yazımızı resmin üstüne yazıyoruz
imagestring($resim, 5, 20, 50/3, 'www.ersindogan.com', $yaziRengi);

// tarayıcıya dosyamızı algılaması için direktif veriyoruz
header('Content-type: image/png');
// ve sonucu çıktılıyoruz
imagepng($resim);
imagedestroy($resim);

Burada ek olarak bahsedeceğim şey iamgestring işlevi. Aslında bu işlev tam olarak yazımızın konusu, yani resim üzerine yazı yazmamızı sağlayan işlev.
Bu işlevdeki ilk parametre üzerine yazı yazılacak resimdir .
İkinci parametre yazı yazmak için kyllanacağımız font tipini belirtiyoruz. 1 den 5 e kadar latin2 kodlamalı yerleşik yazı tiplerini seçebilir veya imageloadfont metodu ile kendi fontumuzu kullanabiliriz.
Üçüncü ve dördüncü parametreler yazının koordinatlarını (x,y) belirtmek için kullanılır.
Beşinci parametre resmi üzerine yazılacak metin.
Altıncı parametre ise yazı rengini belirler.
Yuarıdaki kodun çıktısı aşağıdaki gibi olacaktır :

php-ile-resim-ustune-yazi

Eğer kodları aşağıdaki biçimde değiştirisek :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// rengimizi oluşturuyoruz
$resim=imagecreatetruecolor(50,250);
// resmimizi boyayacağımız rengi oluşturuyoruz
$renk = imagecolorallocate($resim, 176,196,222);
// resmimizi boyuyoruz
imagefill($resim, 0,0, $renk);
// yazı rengimizi belirtiyoruz
$yaziRengi = imagecolorallocate($resim, 0,0,0);
// yazımızı resmin üstüne yazıyoruz
imagestringup($resim, 5, 10, 220, 'www.ersindogan.com', $yaziRengi);

// tarayıcıya dosyamızı algılaması için direktif veriyoruz
header('Content-type: image/png');
// ve sonucu çıktılıyoruz
imagepng($resim);
imagedestroy($resim);

Bu sefer de aşağıdaki gibi bir çıktı alırız

php-ile-resim-ustune-dikey-yazı-yazdırmak

Aslında beni en çok uğraştıran, ama çözümü gözümün önünde duran, resim üzerine yazılan yazının saydamlığını ayarlayabilme konusuna bir sonraki yazıda değineceğim.

Buradaki örnekleri geliştirerek kendinize uygun çözümler oluşturabilirsiniz. Hoşça kalın