[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выравнивание текста по центру изображения
iuriem
Скомпонировал скрипт по ссылке, но он не работает. Видит кто-нибудь причину (другую, чем моё незнание)?



<?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)
А что за ошибка?

Так я и хочу понять что за ошибка sad.gif.

Спустя 5 месяцев, 2 дня, 2 часа, 1 минута, 41 секунда (6.08.2010 - 17:41) shtepsell написал(а):
не разобрался еще? =)
если это весь код то там ругаться должно на $angle - откуда оно задаваться то будет? =) в остальном работает код

Спустя 1 год, 2 месяца, 29 дней, 18 часов, 9 минут, 41 секунда (6.11.2011 - 11:51) Гость_Vitalik написал(а):
Спасибо, за функцию pc_ImageTTFCenter, очень пригодилась :)

Для тех, кто не понял в чем ошибка, весь код запускать не пробовал, но, судя по всему, ошибка заключается в том что до цикла переменная $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);


_____________
Юрий
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.