Поиск по блогу

понедельник, 31 октября 2011 г.

Создание из текста фотографии

Текст -> 
Вот так то. Наша задача сделать из текста фотографию на PHP. Для этой задачи нам понадобиться
Библиотека GD. Задача довольно сложная, но я Вам помогу разобраться.

Для этого нам нужен файл win2uni.php вот его содержимое:

<?php
// Преобразование Windows 1251 -> Unicode
function win2uni( $s )
{
$s = convert_cyr_string($s,'w','i'); // преобразование win1251 -> iso8859-5
// преобразование iso8859-5 -> unicode:
for ( $result='', $i=0; $i175 )?"&#".( 1040+( $charcode-176 ) ).";":$s[$i];
}
return $result;
}
?>

Разбираться в верхнем коде я не стану.

А теперь посмотрим на сам файл создания изображения:

<?php
// Вот нам и понадобился файл win2uni.php
require( 'win2uni.php' );
// Задаем текст
$txt = "Текст";
// Узнаем сколько букв в тексте с помощу функции strlen()
$txtstr = strlen( $txt );
// Узнаем ширину картины ( Это для каждого шрифта и прочего разное)
$txtstrlen = $txtstr * 20;
// Теперь назначаем константу ширины, высоты, шрифта, и размера шрифта.
//Тут все должно быть предельно ясно.
define('WIDTH', $txtstrlen);
define('HEIGHT', 60);
define('FONT_NAME', '42864.ttf');
define('FONT_SIZE', 30);

// Создаем новое изображение, в случае ошибки выводим ее.
$image = imagecreatetruecolor( WIDTH, HEIGHT ) or die( 'Cannot create image' );

// Не забываем преобразовать текст в кодировку Unicode
$text = win2uni( $txt );

$coord = imagettfbbox(
FONT_SIZE, // размер шрифта ( В данном случае у нас константа)
0, // угол наклона шрифта (0 = не наклоняем)
FONT_NAME, // имя шрифта, а если точнее, ttf-файла ( В данном случае у нас константа)
$text // собственно, текст
);

$width = $coord[2] - $coord[0];
$height = $coord[1] - $coord[7];

// Зная ширину и высоту изображения, располагаем текст по центру:

$X = (WIDTH - $width) / 2;
$Y = (HEIGHT + $height) / 2;

imagettftext(
$image, // как всегда, идентификатор ресурса
FONT_SIZE, // размер шрифта ( В данном случае у нас константа)
0, // угол наклона шрифта
$X, $Y, // координаты (x,y), соответствующие левому нижнему
// углу первого символа
0xFFFFFF, // цвет шрифта
FONT_NAME, // имя ttf-файла ( В данном случае у нас константа)
$text
);

// Назначаем, что тут у нас PNG файл, создаем его и освобождаем память
header( 'Content-type: image/png' );
imagepng( $image );
imagedestroy( $image );
// На этом все.
?>
На самом деле библиотека GD и GD2 очень хорошая на ней можно даже Смайлы рисовать но об этом позже.

Комментариев нет:

Отправить комментарий