<?php
function pc_ImageTTFCenter($image, $text, $font, $size, $space = 0,
$tightness = 0, $angle = 0) {
// find the size of the image
$xi = ImageSX($image);
$yi = ImageSY($image);
// find the size of the text
$box = ImageTTFBBox($size, $angle, $font, $text);
$xr = abs(max($box[2], $box[4]));
$yr = abs(max($box[5], $box[7]));
// compute centering
$x = intval(($xi - $xr) / 2);
$y = intval(($yi + $yr) / 2);
return array($x, $y);
}
$image = ImageCreate(500,500);
$text = 'PHP Cookbook Rules!';
$font = 'fonts/candy.ttf';
$size = 20;
$black = ImageColorAllocate($image, 0, 0, 0);
$white = ImageColorAllocate($image, 255, 255, 255);
$text = 'The quick brown fox jumps over the lazy dog.';
for ($font = 1, $y = 5; $font <= 5; $font++, $y += 20) {
list($x, $y) = pc_ImageTTFCenter($image, $text, $font, $size);
ImageTTFText($image, $size, $angle, $x, $y, $white, $black, $font, $text);
}
header('Content-type: image/png');
ImagePng($image);
ImageDestroy($image);
?>
Спустя 14 минут, 5 секунд (4.03.2010 - 15:09) Семён написал(а):
А что за ошибка?
Спустя 1 час, 31 минута, 2 секунды (4.03.2010 - 16:40) iuriem написал(а):
Цитата (Семён @ 4.03.2010 - 12:09) |
А что за ошибка? |
Так я и хочу понять что за ошибка

Спустя 5 месяцев, 2 дня, 2 часа, 1 минута, 41 секунда (6.08.2010 - 17:41) shtepsell написал(а):
не разобрался еще? =)
если это весь код то там ругаться должно на $angle - откуда оно задаваться то будет? =) в остальном работает код
если это весь код то там ругаться должно на $angle - откуда оно задаваться то будет? =) в остальном работает код
Спустя 1 год, 2 месяца, 29 дней, 18 часов, 9 минут, 41 секунда (6.11.2011 - 11:51) Гость_Vitalik написал(а):
Спасибо, за функцию pc_ImageTTFCenter, очень пригодилась :)
Для тех, кто не понял в чем ошибка, весь код запускать не пробовал, но, судя по всему, ошибка заключается в том что до цикла переменная $font содержит путь к файлу шрифтов, а в цикле ей присваивается число (от 1 до 5), отсюда и ошибка.
В таком виде скорее всего будет работать:
Для тех, кто не понял в чем ошибка, весь код запускать не пробовал, но, судя по всему, ошибка заключается в том что до цикла переменная $font содержит путь к файлу шрифтов, а в цикле ей присваивается число (от 1 до 5), отсюда и ошибка.
В таком виде скорее всего будет работать:
function pc_ImageTTFCenter($image, $text, $font, $size, $space = 0,
$tightness = 0, $angle = 0) {
// find the size of the image
$xi = ImageSX($image);
$yi = ImageSY($image);
// find the size of the text
$box = ImageTTFBBox($size, $angle, $font, $text);
$xr = abs(max($box[2], $box[4]));
$yr = abs(max($box[5], $box[7]));
// compute centering
$x = intval(($xi - $xr) / 2);
$y = intval(($yi + $yr) / 2);
return array($x, $y);
}
$image = ImageCreate(500,500);
$text = 'PHP Cookbook Rules!';
$font_candy = 'fonts/candy.ttf';
$size = 20;
$black = ImageColorAllocate($image, 0, 0, 0);
$white = ImageColorAllocate($image, 255, 255, 255);
$text = 'The quick brown fox jumps over the lazy dog.';
for ($font = 1, $y = 5; $font <= 5; $font++, $y += 20) {
list($x, $y) = pc_ImageTTFCenter($image, $text, $font_candy, $size);
ImageTTFText($image, $size, $angle, $x, $y, $white, $black, $font_candy, $text);
}
header('Content-type: image/png');
ImagePng($image);
ImageDestroy($image);
_____________
Юрий