Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> текст на картинке, по всей ширине/высоте/долготе :) 
:(
    Опции темы
Рыжий
Дата 11.5.2006, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Всем привет!
Вопрос: 
Допустим, есть изображение (любая фотка) ее нужно изрешетить надписью. То есть так, как показано на этой картинке: http://howmuch.net.ru/one.jpg
Как я понимаю текст нужно вводить с Imagettftext() с параметром angle =45. Тогда все ОК. Но как сделать это по всей фотке?? По ходу нужен цикл, но за что можно зацепиться? Какое условие ставить?
Или нужно считывать imagesx и imagesy и по ширине-высоте делать зарисовку??
Что подскажите делать?
Спасибо!
  

Это сообщение отредактировал(а) Рыжий - 11.5.2006, 19:16
PM MAIL ICQ   Вверх
Mal Hack
Дата 11.5.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Просто по пикселях, один по абциссе, другой по ординате с шагом равным длине текста.
Пределы - начальное и конечный размеры картинки +/- размер текста. 
PM ICQ   Вверх
Рыжий
Дата 11.5.2006, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Mal Hack, угу, так и думаю.
Получится что-то вроде:
Код

$x=20;
$y=150;
for ($i=1; $i<20; $i++)
{

        Imagettftext($im,25,45,$x,$y,$grey,'arial',$string);
        $y+=250;
        }


Ну это приближенно, кол-во циклов должно считаться и т.д.

Спасибо буду пробовать.... 
PM MAIL ICQ   Вверх
Рыжий
Дата 11.5.2006, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Цитата(Mal Hack @  11.5.2006,  21:31 Найти цитируемый пост)
с шагом равным длине текста

Хм, длинна текста в пикселях выводится с помощью imagefontwidth() 
Код

$string="hello!!!";
$a=strlen($string);
echo "Длинна строки: ".$a." символов <br />";
echo "Длинна строки в пикселах: ".$a*imagefontwidth(25);
 
Если я не ошибаюсь  smile 
Такс... идем дальше  smile  smile  
PM MAIL ICQ   Вверх
Mal Hack
Дата 11.5.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Рыжий, мне вот кажется что должнобыть два цикла.

Цитата(Рыжий @  11.5.2006,  23:45 Найти цитируемый пост)
Если я не ошибаюсь  smile 

Да, так, но сделай еще скидку на отступы. 
PM ICQ   Вверх
Рыжий
Дата 12.5.2006, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Цитата(Mal Hack @  11.5.2006,  23:51 Найти цитируемый пост)
Рыжий, мне вот кажется что должнобыть два цикла.


То есть? На что будет второй? smile 

 
PM MAIL ICQ   Вверх
Mal Hack
Дата 12.5.2006, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Mal Hack @  11.5.2006,  21:31 Найти цитируемый пост)
один по абциссе, другой по ординате с шагом равным длине текста.

По Х и по У. 
PM ICQ   Вверх
Рыжий
Дата 12.5.2006, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Сделал что-то похожее:

Код

$width = imagesx($im);
$hight = imagesy($im);


$a=strlen($string);
$a=$a*imagefontwidth(15);

for ($y=$a; $y<$hight; $y+=250)
{
        for ($x=20;$x<$width;$x+=250)
        {
        Imagettftext($im,15,45,$x,$y,$grey,'arial',$string);
        }

}


В принципе устраивает. Хотя текст выводится по горизонтали, все равно диагональ провести можно. 
Еще в принципе буду эксперементировать... 

PS а почему русские слова очень много места занимают в ширину? Больше чем английские... 

Это сообщение отредактировал(а) Рыжий - 12.5.2006, 01:14
PM MAIL ICQ   Вверх
Mal Hack
Дата 12.5.2006, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Рыжий @  12.5.2006,  01:07 Найти цитируемый пост)
PS а почему русские слова очень много места занимают в ширину? Больше чем английские...

А какую ширину выдает функция? 
PM ICQ   Вверх
Рыжий
Дата 12.5.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: нет
Всего: 20



Я пишу кириллицей с помощью этого кода: 
Код

  function win2uni($s)
  {
    $s = convert_cyr_string($s,'w','i'); // преобразование win1251 -> iso8859-5
    // преобразование iso8859-5 -> unicode:
    for ($result='', $i=0; $i<strlen($s); $i++) {
      $charcode = ord($s[$i]);
      $result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
    }
    return $result;
  }


а далее вывожу ширину русского текста:

Код

$string = win2uni("привет");
$a=strlen($string);
$a=$a*imagefontwidth(15);
echo $a;


А вот ширина английского (кол-во букв такое же)

Код

$string = win2uni("abcdef");
$a=strlen($string);
$a=$a*imagefontwidth(15);
echo $a;


Заметьте ширина разная… Проблем на 95% кроется в функции win2uni.
 
PM MAIL ICQ   Вверх
Mal Hack
Дата 12.5.2006, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Рыжий, про iconv слышал? 
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.