на будущее, тем кто решиться сделать аналогичное.
пример вывода текста в картинке есть тут
Запрос сделал через 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(210, 40) or die ("Cannot Initialize new GD image stream2"); $white = imagecolorallocate($im, 255, 255, 255); // создаем цвет // щрифт $font1 = "img/fonts/tahoma.ttf"; $st1 = $result_node['node_title']; //если кракозябры, попробуйте с так =html_entity_decode($result_node['node_title']); $st1 = mb_substr($st1, 0, 19); // разграничиваем текст // выводим на картинку: imagettftext($im_text, 14, 0, 10, 15, $white, $font1, $st1); // объединяем нарисованый текст с рисунком imagecopymerge($im,$im_text,5, 5, 0, 0, 210, 40, 75); // выводим картинку header ("Content-type: image/jpeg"); imageJPEG ($im, '', 98); ?>
прикрепил аттач с примером, но в нем идет отдельная(собственная) функция для вывода текста с транспорентным фоном, но в итоге последними 3-мя функциями из ссылок, всё вывел как надо.
вот результат
П.С.
цель: если в одном месте цена изменилась, то она поменялась везде,ну и подписи под сообщениями на форумах и др местах ставить, но на форуме прикрыли возможность в ставить php картинки.
Решение: модернизировал скрипт, чтобы он для каждой ноды(по отфильтрованно), создавал картинку в /default/files/cache/[nid].jpg
Создал Крон на хостинге каждые 10 минут скрипт обновляет картинки.
Было бы не плохо привязать скрипт к изменению любой ноды, и генерировать только картинку для одной ноды, сразу после обновления или создания ...
Комментарии
на будущее, тем кто решиться сделать аналогичное.
пример вывода текста в картинке есть тут
Запрос сделал через 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(210, 40) or die ("Cannot Initialize new GD image stream2");
$white = imagecolorallocate($im, 255, 255, 255); // создаем цвет
// щрифт
$font1 = "img/fonts/tahoma.ttf";
$st1 = $result_node['node_title']; //если кракозябры, попробуйте с так =html_entity_decode($result_node['node_title']);
$st1 = mb_substr($st1, 0, 19); // разграничиваем текст
// выводим на картинку:
imagettftext($im_text, 14, 0, 10, 15, $white, $font1, $st1);
// объединяем нарисованый текст с рисунком
imagecopymerge($im,$im_text,5, 5, 0, 0, 210, 40, 75);
// выводим картинку
header ("Content-type: image/jpeg");
imageJPEG ($im, '', 98);
?>
»
написал отрывками, но понятно, откуда какая переменная взялась.
документация есть тут, понятная и на русском( с примерами).
imagecopymerge
imagettftext
imagecopyresampled
прикрепил аттач с примером, но в нем идет отдельная(собственная) функция для вывода текста с транспорентным фоном, но в итоге последними 3-мя функциями из ссылок, всё вывел как надо.
вот результат
П.С.
цель: если в одном месте цена изменилась, то она поменялась везде,ну и подписи под сообщениями на форумах и др местах ставить, но на форуме прикрыли возможность в ставить php картинки.
Решение: модернизировал скрипт, чтобы он для каждой ноды(по отфильтрованно), создавал картинку в /default/files/cache/[nid].jpg
Создал Крон на хостинге каждые 10 минут скрипт обновляет картинки.
Было бы не плохо привязать скрипт к изменению любой ноды, и генерировать только картинку для одной ноды, сразу после обновления или создания ...
С поставленной задачей бился 24 часа, код корявый вышел, но главное что работает ))