За последние 24 часа нас посетили 36364 программиста и 1697 роботов. Сейчас ищет 1131 программист ...

Надпись на картинке русскими буквами

Тема в разделе "Прочие вопросы по PHP", создана пользователем unmanner, 16 май 2011.

  1. unmanner

    unmanner Активный пользователь

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Добрый вечер!

    Такая проблема, изначатьно есть шрифт *.odt функцией imagettftext он мапился на картинку и всё было нормально пока не возникла необходимость использовать русские буквы. Вместо русских букв -- квадраты.

    Сконвертировал шрифт в *.ttf -- безрезультатно.

    Нужен шрифт -- dinprobold

    Подскажите как быть?
     
  2. unmanner

    unmanner Активный пользователь

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Кстати русский Arial.ttf тоже квадратами, тоесть может быть проблема в PHP или системе?
     
  3. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    кодировка не?
     
  4. unmanner

    unmanner Активный пользователь

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    каким образом?

    Нашёл цитату:
     
  5. unmanner

    unmanner Активный пользователь

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    В настройках энвайромента PHP стоит:
    LANG => en_US.UTF-8
    Это может быть причиной?
     
  6. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    PHP:
    1. <?php
    2. // utf 8 document
    3. $ttf_font = "your/dir/ARIAL.TTF";  
    4. $winstring = "проверка";  //utf8 string
    5.  
    6. header("Content-type: image/jpeg");  
    7. $im = ImageCreate(400,30);  
    8. $black = ImageColorAllocate($im, 0,0,0);  
    9. $white = ImageColorAllocate($im, 255,255,255);  
    10. ImageFill($im, 0, 0, $white);  
    11. ImageTTFText($im, 18, 0, 10, 20, $black, $ttf_font, $winstring);  
    12. ImageJpeg($im);
    это работает у вас?
     
  7. unmanner

    unmanner Активный пользователь

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Нет, так не работает..написали в саппорт хостинга, ждём..
     
  8. lexinfo

    lexinfo Активный пользователь

    С нами с:
    16 янв 2007
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    Ростов-на-Дону
    А если iconv?
     
  9. ckjet

    ckjet Активный пользователь

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    unmanner
    Быть может Вы покажите код, так проще будет сориентироваться.
     
  10. unmanner

    unmanner Активный пользователь

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    Такой код

    PHP:
    1. <?php
    2.  
    3. class DrawText
    4. {
    5.     public  $jpegQuality = 100;
    6.     private $ttfFont     = false;
    7.     private $ttfFontSize = false;
    8.     private $hImage      = false;
    9.     private $hColor      = false;
    10.  
    11.     public function __construct($imagePath)
    12.     {
    13.         if (!is_file($imagePath) || !list(,,$type) = @getimagesize($imagePath)) return false;
    14.         $this->hImage = @imagecreatefromjpeg($imagePath);
    15.     }
    16.  
    17.     public function __destruct()
    18.     {
    19.         if ($this->hImage) imagedestroy($this->hImage);
    20.     }
    21.        
    22.     public function setFont($font, $size, $color, $alpha)
    23.     {
    24.         if ( !is_file($font) )
    25.         {
    26.             return false;
    27.         }    #echo '$color: '.$color;
    28.         $this->ttfFont     = $font;
    29.         $this->ttfFontSize   = $size;
    30.         if ($color) $this->setColor($color, $alpha);
    31.     }
    32.  
    33.     public function putText($x, $y, $text, $angle = 0)
    34.     {
    35.         if (!$this->ttfFont || !$this->hImage || !$this->hColor) return false;
    36.  
    37.         imagettftext(
    38.         $this->hImage,
    39.         $this->ttfFontSize, $angle, $x, $y + $this->ttfFontSize,
    40.         $this->hColor, $this->ttfFont, $text);
    41.     }
    42.  
    43.  
    44.     public function setColor($color, $alpha)
    45.     {
    46.         if (!$this->hImage) return false;
    47.         list($r, $g, $b) = array_map('hexdec', str_split(ltrim($color, '#'), 2));
    48.  
    49.         #return $alpha === false ?
    50.         return $this->hColor = imagecolorallocate($this->hImage, $r+1, $g+1, $b+1); #:
    51.         #$this->hColor = imagecolorallocatealpha($this->hImage, $r+1, $g+1, $b+1, $alpha);
    52.     }
    53.  
    54.     public function output ($target, $replace = true)
    55.     {
    56.         if (is_file ($target) && !$replace) return false;
    57.         $ext = strtolower(substr($target, strrpos($target, ".") + 1));
    58.         switch ($ext)
    59.         {
    60.             case "jpg" :
    61.             case "jpeg":
    62.                 imagejpeg($this->hImage, $target, $this->jpegQuality);
    63.                 break;
    64.  
    65.             default: return false;
    66.         }
    67.         return true;
    68.     }
    69. } # CLASS
    70.                $pictureName = "1.jpg";
    71.                 $picture = new DrawText($pictureName);
    72.         $transparency = 100;
    73.         #$font = "arial.ttf";
    74.                $font = "dinprobold.ttf";
    75.         $textSize = "20";
    76.         $textColor = "#123";
    77.         $text = "Test --> Тест";
    78.                 $x = 22; $y = 22;
    79.         $picture -> setFont('fonts/'.$font, $textSize, $textColor, $transparency);
    80.         $picture -> putText($x, $y, $text);
    81.  
    82.         $tmpFileName = "2.jpg";
    83.  
    84.         $picture -> output($tmpFileName);
    85.  
    86.         header('Location: [url=http://'.$_SERVER]http://'.$_SERVER[/url]["SERVER_NAME"].'/2.jpg');
    87. ?>
     
  11. ckjet

    ckjet Активный пользователь

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    [​IMG]

    Удивительно, у меня работает. Попробуй в браузере поставить кодировку utf8 и эхнуть $text. что выдает?
     
  12. unmanner

    unmanner Активный пользователь

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    У меня на хосте на Jino тоже всё работает!

    Но на другом сервере не работает..
     
  13. ckjet

    ckjet Активный пользователь

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    посмотри доступные кодировки на сервере.
     
  14. unmanner

    unmanner Активный пользователь

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
  15. ckjet

    ckjet Активный пользователь

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    попробуй еще в .htaccess написать AddDefaultCharset utf-8
     
  16. ckjet

    ckjet Активный пользователь

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    и что выдает echo $_SERVER["HTTP_ACCEPT_CHARSET"];
     
  17. unmanner

    unmanner Активный пользователь

    С нами с:
    23 янв 2011
    Сообщения:
    105
    Симпатии:
    0
    сек, буду дома отпишусь, спасибо за саппорт!
     
  18. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Что за бред, при чем тут апач.
    Русский текст в скрипте, значит все дело в кодировке, в которой сохранен скрипт. Она не совпадает с кодировкой шрифта. Надо или сохранить скрипт в другой кодировке, или взять другой шрифт.
     
  19. ckjet

    ckjet Активный пользователь

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    а как объяснить что на одном хостинге нормальные символы на другом иврит?