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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Imagick - line-height 
:(
    Опции темы
abalich
Дата 16.10.2012, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Добрый вечер. Использую Imagick, для того что бы генерировать изображения на лету. ПО верх изображение пишу текст. Но столкнулся вот с такой проблемой. По умолчанию annotateImage делает line-height:130% (подбирал по принтскринам).

Т.е. если текст на две строки, то расстояние между строк 120-130%. Как можно настроить line-height ?

Вот такой у меня код!

Код

$svgText = 'Unknow text';
$svgColor = '#000000';
$svgFon = 'transparent';
$svgRotate = 0;
$svgWidth = 400;
$svgHeight = 40;
$svgAlign = 2;
$svgSize = 20;
$svgFont = 'arial';
 
if(isset($_GET['text']) && $_GET['text'] != ''){$svgText = htmlspecialchars_decode($_GET['text']);}
if(isset($_GET['color']) && $_GET['color'] != '' && preg_match("/[0-9A-Za-z]/",$_GET['color']))
{$svgColor = '#'.$_GET['color'];}
if(isset($_GET['fon']) && $_GET['fon'] != '' && preg_match("/[0-9A-Za-z]/",$_GET['fon']) && $_GET['fon'] != 'transparent')
{$svgFon = '#'.$_GET['fon'];}
if(isset($_GET['rotate']) && ($_GET['rotate'] == '90' || $_GET['rotate'] == '0' || $_GET['rotate'] == '270' || $_GET['rotate'] == '180'))
{$svgRotate = $_GET['rotate'];}
if(isset($_GET['w']) && $_GET['w'] != '' && preg_match("/[0-9]/",$_GET['w']) && $_GET['w'] <= 400)
{$svgWidth = $_GET['w'];}
if(isset($_GET['h']) && $_GET['h'] != '' && preg_match("/[0-9]/",$_GET['h']))
{$svgHeight = $_GET['h'];}
if(isset($_GET['align']) && ($_GET['align'] == '1' || $_GET['align'] == '2' || $_GET['align'] == '3'))
{$svgAlign = $_GET['align'];}
if(isset($_GET['fontsize']) && $_GET['fontsize'] != '' && preg_match("/[0-9]/",$_GET['fontsize']) && $_GET['fontsize'] >= 5)
{$svgSize = $_GET['fontsize'];}
if(isset($_GET['fontname']) && $_GET['fontname'] != '' && file_exists('/usr/share/fonts/truetype/dinkyprint/'.$_GET['fontname'].'.ttf'))
{$svgFont = $_GET['fontname'];}
 
 
$im = new Imagick();
$text = new ImagickDraw();
$text->setFont('/usr/share/fonts/truetype/dinkyprint/'.$svgFont.'.ttf');
$text->setFillColor($svgColor);
$text->setFontSize($svgSize);
if($svgAlign == '1'){$text->setGravity (Imagick::GRAVITY_NORTHWEST);} elseif($svgAlign == '3'){$text->setGravity (Imagick::GRAVITY_NORTHEAST);} else{$text->setGravity (Imagick::GRAVITY_NORTH);}
 
$im->newImage($svgWidth,$svgHeight, new ImagickPixel(  $svgFon ));
$xy = $im->queryFontMetrics($text, $svgText, true);
if($xy['textWidth'] > $svgWidth){$svgWidth = $xy['textWidth'];}
if($xy['textHeight'] > $svgHeight){$svgHeight = $xy['textHeight'];}
 
$im->setImageFormat('png');
 
$im->annotateImage($text, 0, 0, $svgRotate, $svgText);
header('Content-type: image/png');
echo $im;
$im->destroy();




--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
abalich
Дата 18.10.2012, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Ну что??? ни кто не хочет помочь!!


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
abalich
Дата 8.11.2012, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Блин.. ну кто нибудь!


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
Fortop
Дата 9.11.2012, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



в гугле совсем забанили?

http://www.imagemagick.org/Usage/text/#interline-spacing


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
IgorIV
Дата 10.11.2012, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 2
Всего: 8



У меня сейчас нет возможности пробовать. 
Либо костыль - http://stackoverflow.com/questions/3577870...-in-imagemagick
Либо копать в сторону - http://www.php.net/manual/en/imagick.setoption.php

Это сообщение отредактировал(а) IgorIV - 10.11.2012, 08:47
PM MAIL   Вверх
abalich
Дата 11.11.2012, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Fortop, ну как через convert делать понятно.  я как именно через класс в PHP ?


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
skyboy
Дата 11.11.2012, 19:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



я думаю, ::setOption('interline-spacing' может помочь
PM MAIL   Вверх
abalich
Дата 13.11.2012, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



skyboy, не помогает ни как

Код

im = new Imagick();
$im->setOption('-interline-spacing', '-5');
$text = new ImagickDraw();
$text->setFont('/usr/share/fonts/truetype/dinkyprint/'.$svgFont.'.ttf');
$text->setFillColor($svgColor);
$text->setFontSize($svgSize);
if($svgAlign == '1'){$text->setGravity (Imagick::GRAVITY_NORTHWEST);} elseif($svgAlign == '3'){$text->setGravity (Imagick::GRAVITY_NORTHEAST);} else{$text->setGravity (Imagick::GRAVITY_NORTH);}



$im->newImage($svgWidth,$svgHeight, new ImagickPixel(  $svgFon ));




--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
abalich
Дата 13.11.2012, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Может кто-нибудь подскажет как победить этот чертов interline-spacing


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
skyboy
Дата 13.11.2012, 16:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(abalich @  13.11.2012,  08:44 Найти цитируемый пост)
setOption('-interline-spacing'

дефис впереди зачем? о_0
PM MAIL   Вверх
Fortop
Дата 13.11.2012, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(skyboy @  13.11.2012,  16:41 Найти цитируемый пост)
дефис впереди зачем? о_0 

ну вот такие сейчас программисты smile


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Aliance
Дата 13.11.2012, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



это ж минус  smile 
PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 13.11.2012, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



та ладно, хорош стебаться, я все равно не уверен, что setOption — для установки произвольных параметров. просто информации совсем мало, мож, и сработает.
PM MAIL   Вверх
abalich
Дата 27.11.2012, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 26.2.2007
Где: Воронеж

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



Fortop, я делал без дефиса. не сработало, погуглил - нашел где с дефисом. все равно не работает


--------------------
Мой дядя самых честных "грабил"...
PM MAIL WWW   Вверх
skyboy
Дата 27.11.2012, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



ну, тогда забей на imagik — используй консольную утилиту напрямую.
или спроси у авторов. и это я всерьез предлагаю, да.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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