PHP – Resim üzerine yazılan yazıyı ortalama


Daha önce şu yazımda ImageCreate fonksiyonu ile bir resmin üzerine basitçe nasıl yazı yazılabileceğini anlatmıştım. Geçenlerde ise bir online sayacı hazırlarken genişliği ve yüksekliği farklı olan bir resmin üzerine yazı yazıp bunu dikey ve yatay olarak (center/middle) ortalamak gibi bir fonksiyona ihtiyacım oldu, üzerinde biraz kafa patlattım fakat tek başıma üstesinden gelemedim ben de çözümü yabancı bir sitede bulup kendime göre düzenledim. Web tasarımla ilgileniyorsanız bu gibi bir fonksiyon mutlaka işinizi görecektir.

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
35
36
37
<?php
// Credits: BitRepository
// URL: http://www.bitrepository.com/web-programming/php/how-to-center-a-text-on-an-image-using-gd.html

// Oluşturulacak resim ebatları
$width = 507;
$height = 75;

// Resmi oluştur
$im = ImageCreate($width, $height);

// Arkaplan ve kenarlık rengi
$bg = ImageColorAllocate($im, 200, 250, 250);
$border = ImageColorAllocate($im, 207, 199, 199);
ImageRectangle($im, 0, 0, $width - 1, $height - 1, $border);

$text = 'Ortalanacak metin';
$textcolor = ImageColorAllocate($im, 0, 0, 255);

// Font boyutu
$font = 3;
$font_width = ImageFontWidth($font);
$font_height = ImageFontHeight($font);

// Metin ebatları
$text_width = $font_width * strlen($text);
$text_height = $font_height;

// Yatay ve dikey ortalama
$position_center = ceil(($width - $text_width) / 2);
$position_middle = ceil(($height - $text_height) / 2);

// Yazıyı resme bastır
$image_string = ImageString($im, $font, $position_center, $position_middle, $text, $textcolor);
header("Content-type: image/png");
ImagePNG($im);
?>

Scriptin çalışan örneği:

Alıntı:
http://www.bitrepository.com/php-how-to-center-a-text-on-an-image-using-gd.html

İlginizi Çekebilecek Diğer İçerikler

Facebook Yorumları

4 Yorum

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