Текст в картинке

Главные вкладки

Аватар пользователя sqdimon sqdimon 29 сентября 2012 в 9:25

Всем привет.
Озадачился такой идеей:
Через views выводятся поля, потом эти поля объединить в одну картинку.

такое уже делал через PHP, но руками, а может есть модуль, чтоб не изобретать велосипед.

Комментарии

Аватар пользователя sqdimon sqdimon 10 ноября 2015 в 11:48

на будущее, тем кто решиться сделать аналогичное.
пример вывода текста в картинке есть тут

Запрос сделал через views (после "предпросмотра", внизу, генериться запрос), он мне вывел нужные поля, кроме картинок.

<?php$query_node = "  SELECT node.nid AS nid, node.title AS node_title, 
node.type AS node_type, node.vid AS node_vid, 
node_data_field_price.field_price_value AS node_data_field_price_field_price_value, 
node_data_field_price.field_price_eur_value AS node_data_field_price_field_price_eur_value, 
node_data_field_price.field_price_usd_value AS node_data_field_price_field_price_usd_value,
 RAND() AS _random 
FROM dru_node node  
LEFT JOIN dru_content_type_post node_data_field_price ON node.vid = node_data_field_price.vid
 WHERE (node.status <> 0) AND (node.type in ('post')) AND (node.nid = ".$nid.") 
ORDER BY _random ASC   ";
// вытаскиваем поля "заголовок" и "цену"
$result_node = db_fetch_array(db_query ($query_node)); 
$title = html_entity_decode($result_node['node_title']);
$price = $result_node['node_data_field_price_field_price_value']." rub";
?>
<?php  // достаём фотку по nid 
  
$sql "  SELECT       f.fid,       i.field_picture_data,       f.filepath   FROM     dru_content_field_picture i 
  JOIN     dru_files f   ON     f.fid = i.field_picture_fid    WHERE     nid = "
.$nid." AND delta= '0'";
// перекидываем картинку 
$data db_fetch_array(db_query($sql));    
$file_path $data['filepath'];    // дальше используем путь картинки как угодно      
?>

Отображаем кирилицу, или ставим шрифт ttf:

<?php
// создаем картинку truecolor +поля
$im = @imagecreatetruecolor($width+10$height+5) or die ("Cannot Initialize new GD image stream");
$im_text = @imagecreatetruecolor(21040) or die ("Cannot Initialize new GD image stream2");
$white imagecolorallocate($im255255255); // создаем цвет
// щрифт
$font1 "img/fonts/tahoma.ttf";
$st1 $result_node['node_title']; //если кракозябры, попробуйте с так =html_entity_decode($result_node['node_title']); 
$st1 mb_substr($st1019);  // разграничиваем текст
// выводим на картинку: 
imagettftext($im_text1401015$white$font1$st1);
// объединяем нарисованый текст с рисунком  
imagecopymerge($im,$im_text,55002104075);
// выводим картинку
header ("Content-type: image/jpeg");
imageJPEG ($im''98);
?>

»

написал отрывками, но понятно, откуда какая переменная взялась.
документация есть тут, понятная и на русском( с примерами).
imagecopymerge
imagettftext
imagecopyresampled

прикрепил аттач с примером, но в нем идет отдельная(собственная) функция для вывода текста с транспорентным фоном, но в итоге последними 3-мя функциями из ссылок, всё вывел как надо.

вот результат

П.С.
цель: если в одном месте цена изменилась, то она поменялась везде,ну и подписи под сообщениями на форумах и др местах ставить, но на форуме прикрыли возможность в ставить php картинки.
Решение: модернизировал скрипт, чтобы он для каждой ноды(по отфильтрованно), создавал картинку в /default/files/cache/[nid].jpg
Создал Крон на хостинге каждые 10 минут скрипт обновляет картинки.

Было бы не плохо привязать скрипт к изменению любой ноды, и генерировать только картинку для одной ноды, сразу после обновления или создания ...