Картинки...

Идеи для расширения функциональности phpBB 2.0.x
Йыс
phpBB 1.4.0
Сообщения: 34
Стаж: 19 лет 9 месяцев

Картинки...

Сообщение Йыс »

Код: Выделить всё

<?
$text= "Текст";
$img = imagecreate('44', '15'); 
$back = imagecolorallocate($img, 218, 218 ,218); 
$black = imagecolorallocate($img, 0, 0, 0); 
imageline($img, 0, 0, 43, 0, $black); 
imageline($img, 0, 0, 0, 14 , $black); 
imageline($img, 0, 14, 43, 14 , $black); 
imageline($img, 43, 0, 43, 14 , $black);  
imagestring($img,3,5,0,$text,$black);  
imagepng($img);
?>
Здесь представлен вывод (с помощью PHP и его модуля обработки PNG-изображений) картинки серого цвета в чёрной рамочке, в которой должно прописаться - "Текст". Однако результатом является картинка, посреди которой нарисованы 5 неизвестных символов. Далее удалось выяснить, что это слово "Текст" в кодировке "Центральноевропейская (Windows)".
Вопрос: Каким образом можно задать шрифт/кодировку для текста, выводящегося на картинку PNG с помощью PHP ?

Добавлено спустя 3 часа 44 минуты 54 секунды:

Код: Выделить всё

<?php

  function win2uni($s)
  {
    $s = convert_cyr_string($s,'w','i'); 
    for ($result='', $i=0; $i<strlen($s); $i++) {
      $charcode = ord($s[$i]);
      $result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
    }
    return $result;
  }

  define('WIDTH', 200);
  define('HEIGHT', 60);
  define('FONT_NAME', 'arial.ttf');
  define('FONT_SIZE', 20);

  $image = imagecreatetruecolor(WIDTH,HEIGHT)
    or die('Невозможно создать изображение.');

  $text = win2uni('Текст');

  $coord = imagettfbbox(
     FONT_SIZE, 
     0,
     FONT_NAME, 
     $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,
    0xFFFFFF,
    FONT_NAME,
    $text
  );

  header('Content-type: image/png');
  imagepng($image);
  imagedestroy($image);

?>
Как я понял, никто из вас на поставленный вопрос ответить не смог. Пришлось самому искать. А ответ таков: Нет возможности изменить кодировку текста, выводимого функцией imagestring PHP'а.
Зато можно задать шрифт. Выше приведённый код выведет текст "Текст" шрифта arial (работа проверялась в PHP5).
Так вот, запрос: Можно создать к каждому стилю автогенерируемый текст на кнопки (следовательно покончить с проблемой ненарисованных кнопок к стилю). Думаю, если разобраться немножко в PHP'е, то проблем с этим не будет.
Gosudar
phpBB 2.0.0
Сообщения: 227
Стаж: 19 лет 9 месяцев

Сообщение Gosudar »

А ответ таков: Нет возможности изменить кодировку текста, выводимого функцией imagestring PHP'а.
Ну почему же?
Функция imagestring — Горизонтальное рисование строки
imagestring (resource image, int font, int x, int y, string s, int color)
Горизонтальное рисование строки s на изображении image.
font - идентификатор шрифта. Если font равен 1, 2, 3, 4 или 5, то используется встроенный шрифт (большее число соответствует шрифту большего размера).
x, y - координаты левого верхнего угла рисуемого символа.
color - идентификатор цвета символа.

Что нам мешает подключить свой шрифт формата GD.
p.s. кстати такой шрифт создать можно утилитой "PHP Font Editor"
Йыс
phpBB 1.4.0
Сообщения: 34
Стаж: 19 лет 9 месяцев

Сообщение Йыс »

Может и возможно, но тема не об этом. Нужно создать мод для автоматического рисования кнопок к стилям на каждый язык. Или хотя бы инструмет, который позволяет сгенерировать текст на изображении кнопки с возможностью выбора шрифта, размера текста, цвета, наклона и другого. Рисовать фотожопом (или чем то подобным) - довольно неудобное и нудное дело.
Аватара пользователя
AlexWB
phpBB 1.4.4
Сообщения: 199
Стаж: 20 лет 3 месяца
Откуда: Kiev.UA

Сообщение AlexWB »

Йыс
ты предлагаешь для вывода кнопки, каждый раз графическую библиотеку дергать?

или хочешь создать утилиту, которая один раз рисует кнопки и сохраняет их в граф.файле для последующего использования?
Йыс
phpBB 1.4.0
Сообщения: 34
Стаж: 19 лет 9 месяцев

Сообщение Йыс »

Только не "хочу создать", а предлагаю писателям модов этим заняться.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 21 год 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Йыс
Никакая автоматика не заменит хорошего дизайнера. И вообще, хорошо нарисовать локализованные кнопки для стиля, не имея PSD довольно проблематично.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений

Вернуться в «Запросы модов для phpBB 2.0.x»