Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Веб-программирование > PHP
Перезагрузить страницу Кирилица в графике
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
e47C1cA7D7c57D2 e47C1cA7D7c57D2 вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.11.2004
По умолчанию Кирилица в графике - 06.11.2004, 03:15

Вопрос такой:
Как сделать так, чтобы при создании рисунка, средствами gd, нормально отображались русские надписи, сделанные при помощи ImageTTFText.
А то ерунда какая-то вылазит
И еще где в Mandrake находятся файлы шрифтов? (Надо для указания переменой окружения)

Заранее благодарен!
Спасибо.
Ответить с цитированием
  (#2 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию 06.11.2004, 10:37

Поскольку то, как ты выводишь текст, ты не показал - то внимательно читай мануал по ImageTTFText.
Ответить с цитированием
  (#3 (permalink)) Старый
e47C1cA7D7c57D2 e47C1cA7D7c57D2 вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.11.2004
По умолчанию 07.11.2004, 00:06

Код:
<?php   
   $button_text = $HTTP_POST_VARS['button_text'];
   $color = $HTTP_POST_VARS['color'];   
   if(empty($button_text) || empty($color))
   {
      echo 'Форма заполнена неверно. Создание изображения невозможно!';
      exit;
   }
   $im = ImageCreateFromPNG($color.'-button.png');   
   $width_image = ImageSX($im);
   $height_image = ImageSY($im);
   $width_image_wo_margins = $width_image-(2*18);
   $height_image_wo_margins = $height_image-(2*18);
   $font_size = 33;   
   putenv('GDFONTPATH=/xxx/xxxn/fonts');   
   $fontname = 'arial';   
   do
   {
      $font_size--;
      $bbox = imagettfbbox($font_size, 0, $fontname, $button_text);
      $right_text = $bbox[2]; //Правая координата
      $left_text = $bbox[0]; //Левая координата
      $width_text = $right_text - $left_text;
      $height_text = abs($bbox[7]-$bbox[1]);  
   }
   while($font_size>8 &&
         ($height_text > $height_image_wo_margins ||
         $width_text > $width_image_wo_margins)
         );         
   if($height_text > $height_image_wo_margins ||
      $width_text > $width_image_wo_margins)
   {
      echo 'Текст не помещается на кнопку! 
';
   }
   else
   {      
      $text_x = $width_image/2.0 - $width_text/2.0;
      $text_y = $height_image/2.0 - $height_text/2.0;      
      if($left_text < 0)
         $text_x += abs($left_text);  
      $above_line_text = abs($bbox[7]);
      $text_y += $above_line_text;          
      $text_y -= 2;       
      $white = ImageColorAllocate($im, 255, 255, 255);     
      ImageTTFText($im, $font_size, 0, $text_x, $text_y, $white, $fontname, $button_text);
      Header('Content-type: image/png');
      ImagePNG($im);
   }
   ImageDestroy($im);
?>
Примерно так. И здесь мне нужен путь к шрифтам. У себя в примере я использовал шрифт, просто загрузив его в папку с примером. Пробовал разные шрифты - не получается.
А что будет если я в заголовке укажу кодировку? Почему то никак не реагирует
Ответить с цитированием
  (#4 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию 07.11.2004, 00:21

А мануал ты уже внимательно прочёл?
Цитата:
Originally posted by http://php.net/ImageTTFText
[b]text is the text string which may include UTF-8 character sequences (of the form: {) to access characters in a font beyond the first 255.
Я так понимаю, $button_text у тебя в кодировке Windows-1251, поэтому не помешало бы привести текст к UTF-8. В этом тебе может помочь, например, iconv
Цитата:
А что будет если я в заголовке укажу кодировку? Почему то никак не реагирует
И не должно, поскольку на вывод текста в картинку это никоим образом влиять не может - это заголовок для браузера, который понятия не имеет, что там изображено на картинке.
PS: в следующий раз, публикуя код, пользуйся тэгами
Код:
тут код
Ответить с цитированием
  (#5 (permalink)) Старый
e47C1cA7D7c57D2 e47C1cA7D7c57D2 вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 05.11.2004
По умолчанию 08.11.2004, 01:19

Спасибо! Учту!
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Erson
Guest
 
Сообщений: n/a
По умолчанию 09.11.2004, 03:29

Доброго времени суток...У меня похоже вопрос из той же темы. Только проблема в том,что я тока не давно стал изучать php и очень слабо в нём секу. Проблема в том, что в каскадной менюшке не правильно отображается русский шривт.Помогите плиз...
Я выкидываю коды всех php файлов так как не знаю где проблема

button.php
Код:
<?php
// -----------------------------------------------------------------------------------------------
// button.php
// -----------------------------------------------------------------------------------------------
// Project:   Cascading menu with image buttons using on-the-fly image creation.
// Author:    Copyright (c) Urs <admin@circle.ch>
// Version:   1.0.0
// Update:    20-7-2000
// Licence:   ?
// PHP:       php-4.0.0-win32
//
// Source:    http://www.circle.ch/scripts/code/button_menu.zip
// Reference: "menu class" written by:                  <zakj@i.am>,
//            modified "menu class" for image use by:   <admin@circle.ch>
// Syntax:    for testing:
//               http://localhost/nested_menu.php
//            for inclusion (see also nested_menu.php):
//               [img]button.php?fg=990000&bg=ffffff&txt=button one[/img]
// Settings:  $bg = background color , hexadecimal
//            $fg = foreground color , hexadecimal
//            hexadecimal order : RGB (each 2byte)
//
// Enjoy!
// -----------------------------------------------------------------------------------------------
// Be aware of the patented GIF format! Adapt the routines to PNG. <http://www.libpng.org/pub/png>
// -----------------------------------------------------------------------------------------------



  define("TextFONT", "3");

  function ConvertColor($hexVal){
    $ColorVal = array(3);
    for($i = 0; $i < 3; $i++)
      $ColorVal[$i] = HexDec(substr($hexVal, $i * 2, 2));
    return $ColorVal;
  }

  //$width = strlen($txt) * ImageFontWidth(TextFONT);
  $width = 110;
  $offset = 2;
  $imgFRAME = ImageCreate($width, ImageFontHeight(TextFONT)+$offset);

  list($red, $green, $blue) = ConvertColor($bg);
  $bgCOLOR = ImageColorAllocate($imgFRAME, $red, $green, $blue);

  list($red, $green, $blue) = ConvertColor($fg);
  $fgCOLOR = ImageColorAllocate($imgFRAME, $red, $green, $blue);

  ImageFill($imgFRAME, 1, 1, $bgCOLOR);
  ImageString($imgFRAME, TextFONT, 1, 1, $txt, $fgCOLOR);

  header("Content-type: image/png");
  ImagePNG($imgFRAME);
  ImageDestroy($imgFRAME);
?>
menu.php
Код:
<?php
// -----------------------------------------------------------------------------------------------
// menu.php
// -----------------------------------------------------------------------------------------------
// Project:   Cascading menu with image buttons using on-the-fly image creation.
// Author:    Copyright (c) Urs <admin@circle.ch>
// Version:   1.0.0
// Update:    20-7-2000
// Licence:   ?
// PHP:       php-4.0.0-win32
//
// Reference: - "menu class" originally written by:      <zakj@i.am>,
//            - modified "menu class" for image use by:  <admin@circle.ch>
//
// Enjoy!
// -----------------------------------------------------------------------------------------------

class menu {

    var $image;
    var $items;
    var $open;
    var $closed;
    var $indent;
    var $name;

    function menu($image,
                  $name,
                  $open = '',
                  $closed = '',
                  $indent = ''
                 )
    {
        $this->items  = array();
        $this->image   = $image;
        $this->name = $name;
        $this->open   = $open;
        $this->closed = $closed;
        $this->indent = $indent;
    }

    function add($image, $href = "", $target = "") {
        $n = count($this->items);

        if (is_object($image)) {
            $this->items[$n] = $image;
        } else {
            $this->items[$n]['image'] = $image;
            $this->items[$n]['href'] = $href;
            $this->items[$n]['target'] = $target;
        }
    }

    function show($nest = 0) {
        $urlimage = strtr ($this->name, ' ', '_');
        $indent = '';
        global $$urlimage;
        global $PHP_SELF;
        global $QUERY_STRING;

        if ($nest) { // > php4
            if(function_exists("str_repeat")){
                $indent = str_repeat($this->indent, $nest);
            } else { // php3
                for($i=0; $i<$nest; $i++){
                    $indent = $indent . $this->indent;
                }
            }
        }

        if (isset($$urlimage)) {
            printf('%s%s
',
                   $indent . $this->open,
                   basename ($PHP_SELF),
                   ereg_replace("{$urlimage}=&", '', $QUERY_STRING),
                   $this->image);
            echo "n";

            while (list(,$item) = each($this->items)) {
                if (is_object($item)) {
                    $item->show($nest + 1);
                } else {
                    printf('%s%s
',
                           $indent . $this->indent,
                           $item['href'],
                           (!empty($item['target']) ? ' target="' . $item['target'] . '"' : ''), $item['image']);
                    echo "n";
                }
            }
        } else {
            printf('%s%s
',
                   $indent . $this->closed,
                   basename ($PHP_SELF),
                   $urlimage, $QUERY_STRING,
                   $this->image);
            echo "n";
        }
    }
}
?>
nav.php
Код:
<?php
// -----------------------------------------------------------------------------------------------
// nested_menu.php
// -----------------------------------------------------------------------------------------------
// Project:   Cascading menu with image buttons using on-the-fly image creation.
// Author:    Copyright (c) Urs <admin@circle.ch>
// Version:   1.0.0
// Update:    20-7-2000
// Licence:   ?
// PHP:       php-4.0.0-win32
//
// Source:    http://www.circle.ch/scripts/code/button_menu.zip
// Reference: "menu class" written by:                  <zakj@i.am>,
//            modified "menu class" for image use by:   <admin@circle.ch>
// Syntax:    for testing:
//               http://localhost/nested_menu.php
//            for inclusion (see also nested_menu.php):
//               [img]button.php?fg=990000&bg=ffffff&txt=button one[/img]
// Settings:  $bg = background color , hexadecimal
//            $fg = foreground color , hexadecimal
//            hexadecimal order : RGB (each 2byte)
//
// Enjoy!
// -----------------------------------------------------------------------------------------------
// Be aware of the patented GIF format! Adapt the routines to PNG. <http://www.libpng.org/pub/png>
// -----------------------------------------------------------------------------------------------




  $sub =  new menu('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%201_4[/img]', 'sub 1 1');
  $sub->add('[img]button.php?fg=aaaaaa&bg=eeeeee&txt=%20%20subsub%201_4_1[/img]', 'link4.html', 'main');
  $sub->add('[img]button.php?fg=aaaaaa&bg=eeeeee&txt=%20%20subsub%201_4_2[/img]', 'link5.html', 'main');

  $main = new menu('[img]button.php?fg=f00000&bg=dddddd&txt=Проекты[/img]', 'Проекты');
  $main->add('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%201_1[/img]', 'link1.html', 'main');
  $main->add('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%201_2[/img]', 'link2.html', 'main');
  $main->add('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%201_3[/img]', 'link3.html', 'main');
  $main->add($sub);

  $sub2 =  new menu('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%202_4[/img]', 'sub 2 1');
  $sub2->add('[img]button.php?fg=aaaaaa&bg=eeeeee&txt=%20%20subsub%202_4_1[/img]', 'link4.html', 'main');
  $sub2->add('[img]button.php?fg=aaaaaa&bg=eeeeee&txt=%20%20subsub%202_4_2[/img]', 'link5.html', 'main');

  $main2 = new menu('[img]button.php?fg=f00000&bg=dddddd&txt=menu%202[/img]', 'menu 2');
  $main2->add('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%202_1[/img]', 'link1.html', 'main');
  $main2->add('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%202_2[/img]', 'link2.html', 'main');
  $main2->add('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%202_3[/img]', 'link3.html', 'main');
  $main2->add($sub2);

  $sub3 =  new menu('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%203_4[/img]', 'sub 3 1');
  $sub3->add('[img]button.php?fg=aaaaaa&bg=eeeeee&txt=%20%20subsub%203_4_1[/img]', 'link4.html', 'main');
  $sub3->add('[img]button.php?fg=aaaaaa&bg=eeeeee&txt=%20%20subsub%203_4_2[/img]', 'link5.html', 'main');

  $main3 = new menu('[img]button.php?fg=f00000&bg=dddddd&txt=menu%203[/img]', 'menu 3');
  $main3->add('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%203_1[/img]', 'link1.html', 'main');
  $main3->add('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%203_2[/img]', 'link2.html', 'main');
  $main3->add('[img]button.php?fg=666666&bg=eeeeee&txt=%20submenu%203_3[/img]', 'link3.html', 'main');
  $main3->add($sub3);

  ?>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <HTML>
  <HEAD>
  <TITLE>Title</TITLE>
  </HEAD>
  <BODY BGCOLOR="#DDDDDD">
  <?php
  $main->show();
  $main2->show();
  $main3->show();
  ?>
  </BODY>
  </HTML>
И вот ССЫЛКА на весь архив...
Помогите плиз,очень надо. Зарание спасибо.[/b]
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
на графике показать точки уравнения Наталька Pascal 0 26.05.2011 10:37
При открітии жестких дисков не отображается кирилица, что может быть? sergey_165 Любые вопросы от новичков 14 07.08.2008 23:22
вопрос по хтмл и Flash графике lamer666 Графика & дизайн 5 20.03.2008 03:54
по графике помогите!!! temnaja Pascal 5 11.08.2006 05:27
Использование DirectX в 2D вектороной графике kostik_che Программирование графики 0 24.04.2006 18:44
лабы по компьютерной графике Cleomeness Задания за деньги 5 18.03.2006 22:06
Вопрос по подписям на графике! БурундуК Visual Basic 0 25.01.2006 18:52
Нужна помощь по 3D-графике испанец Программирование графики 1 24.12.2005 19:16
Методы двойной буферизации в графике UZZer Visual C++ 8 09.09.2005 10:55
Кирилица и буфер обмена Fuud Delphi 4 29.10.2004 15:05
Где найти информация по машинной графике в интернете EUGIX C++ Builder 0 19.06.2004 00:10
Не работает кирилица в VC++7 Юра23 Visual C++ 10 27.04.2004 23:53



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов