Цитата:
оставил как было единственное мое rtrimтак как я хотел уйти от верхнего регистра, не найдя другого способа по вашей рекомендации пробовал без mb_strtoupper $bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, '$show_weather') результат вышел с ошибкой. В кавычка, скобках, между точек, все равно ошибка |
Цитата:
Во-первых какой смысл добавлять справа пробел, чтобы потом его вырезать? Во-вторых второй параметр функции не задает кодировку, а указывает символы, которые будут удалены справа. Пробела у вас не указано, а значит ... У цифр, управляющих символов и знаков, нет ни верхнего регистра, нет отличия и в коде в других кодировках. Поэтому "в верхний регистр" да еще с учетом UTF-8 цифр date('H:i'), это глупость неимоверная. А не работает у вас без этого хлама потому, что вы пишите код с ошибкой - это явно прописываемое строковое значение нужно обрамлять кавычками, но имя переменной почему в кавычках '$show_weather'? Читайте о функциях, которые используете, вы делаете явные ошибки в задании параметров, а проблемы этого устраняете какими граблями. |
Цитата:
Цитата:
|
Цитата:
Читаем тут https://www.php.net/manual/ru/imagick.annotateimage.php и выполняем пример из описания, заменив строку 'The quick brown fox jumps over the lazy dog' на date('H:i'). Есть проблемы с выводом? Нет. А теперь так вывести strtoupper(date('H:i')), mb_... тут как собаке пятая лапа. Есть разница между date('H:i') и strtoupper(date('H:i'))? Сколько еще можно говорить, что вы делаете преобразования там, где они не имеют никакого значения, это просто глупости. Не делайте ошибок в коде, вот ваши проблемы. |
Цитата:
с днем недели верно же: if($view_today){ $draw->setFont(BASEPATH."/font/".$font_date); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($today_font_size); $draw->setFillColor("rgb(".$today_font_color.")"); $bg->annotateImage($draw, $today_text_pixel_x, $today_text_pixel_y, 0, mb_strtoupper($days[(date('w'))])); |
// Разрешение на отображение ошибок на экране error_reporting(E_ERROR | E_WARNING | E_PARSE); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); require_once('setup.php'); require_once('function.php'); header('Content-type: text/html; charset=utf-8'); echo '<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">'; echo '<link href="style.css" rel="stylesheet">'; // Получим текущую дату $date_today = date('Ymd'); // Вывод месяца на русском $monthes = array( 1 => 'Января', 2 => 'Февраля', 3 => 'Марта', 4 => 'Апреля', 5 => 'Мая', 6 => 'Июня', 7 => 'Июля', 8 => 'Августа', 9 => 'Сентября', 10 => 'Октября', 11 => 'Ноября', 12 => 'Декабря' ); // Вывод дня недели на русском $days = array( 'Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота' ); // --- РИСОВАНИЕ --------------------- setLog('Создаем обложку'); $draw = new ImagickDraw(); if(file_exists(BASEPATH.timeToDayBg())) { $bg = new Imagick(BASEPATH.timeToDayBg()); } else { setLog('ОШИБКА! Не найден '.BASEPATH.timeToDayBg().' Загрузите файл либо отключите $show_time_of_day в config.php'); print_r('ОШИБКА! Не найдена обложка, смотрите logs.txt'); exit; } $draw->setFont(BASEPATH."/font/".$font); $draw->setTextAlignment(Imagick::ALIGN_CENTER); //ПОСЛЕДНИЕ ПОДПИСЧИКИ if($view_last_subscriber) { $last_subscriber = getApiMethod('groups.getMembers', array( 'group_id' => $group_id, 'sort' => 'time_desc', 'count' => $last_subscriber_count, 'fields' => 'photo_200', 'access_token' => $access_token )); setLog('Массив last_subscriber: '.$last_subscriber); if($last_subscriber) { $last_subscriber = json_decode($last_subscriber, true); foreach($last_subscriber['response']['items'] as $user ) { $last_users[] = $user; // добавляем юзера к юзерам } foreach ($last_users as $k => $last_user){ // Скачиваем фото copy ($last_user['photo_200'], BASEPATH.'cover/last_subscriber_'.($k+1).'.jpg'); } $last_subscriber_firstname_1 = $last_users[0]['first_name']; $last_subscriber_lastname_1 = $last_users[0]['last_name']; $last_subscriber_firstname_2 = $last_users[1]['first_name']; $last_subscriber_lastname_2 = $last_users[1]['last_name']; $last_subscriber_firstname_3 = $last_users[2]['first_name']; $last_subscriber_lastname_3 = $last_users[2]['last_name']; } $file_name_1 = BASEPATH.'cover/last_subscriber_1.jpg'; $file_name_2 = BASEPATH.'cover/last_subscriber_2.jpg'; $file_name_3 = BASEPATH.'cover/last_subscriber_3.jpg'; //ПОДПИСЧИК #1 if(file_exists($file_name_1) && $view_last_subscriber) { $last_subscriber_photo_1 = new Imagick($file_name_1); if($roundingOff==true) { RoundingOff($last_subscriber_photo_1, $last_subscriber_width,$last_subscriber_height); } $draw->setFontSize($last_subscriber_font_size); $draw->setFillColor("rgb(".$last_subscriber_font_color.")"); $bg->compositeImage($last_subscriber_photo_1, Imagick::COMPOSITE_DEFAULT, $last_subscriber_photo_1_x, $last_subscriber_photo_1_y); $bg->annotateImage($draw, $last_subscriber_1_text_x, $last_subscriber_1_text_y, 0, mb_strtoupper($last_subscriber_firstname_1.' '.$last_subscriber_lastname_1, 'UTF-8')); } //ПОДПИСЧИК #2 if(file_exists($file_name_2) && $view_last_subscriber) { $last_subscriber_photo_2 = new Imagick($file_name_2); if($roundingOff==true) { RoundingOff($last_subscriber_photo_2, $last_subscriber_width,$last_subscriber_height); } $draw->setFontSize($last_subscriber_font_size); $draw->setFillColor("rgb(".$last_subscriber_font_color.")"); $bg->compositeImage($last_subscriber_photo_2, Imagick::COMPOSITE_DEFAULT, $last_subscriber_photo_2_x, $last_subscriber_photo_2_y); $bg->annotateImage($draw, $last_subscriber_2_text_x, $last_subscriber_2_text_y, 0, mb_strtoupper($last_subscriber_firstname_2.' '.$last_subscriber_lastname_2, 'UTF-8')); } //ПОДПИСЧИК #3 if(file_exists($file_name_3) && $view_last_subscriber) { $last_subscriber_photo_3 = new Imagick($file_name_3); if($roundingOff==true) { RoundingOff($last_subscriber_photo_3, $last_subscriber_width,$last_subscriber_height); } $draw->setFontSize($last_subscriber_font_size); $draw->setFillColor("rgb(".$last_subscriber_font_color.")"); $bg->compositeImage($last_subscriber_photo_3, Imagick::COMPOSITE_DEFAULT, $last_subscriber_photo_3_x, $last_subscriber_photo_3_y); $bg->annotateImage($draw, $last_subscriber_3_text_x, $last_subscriber_3_text_y, 0, mb_strtoupper($last_subscriber_firstname_3.' '.$last_subscriber_lastname_3, 'UTF-8')); } } // ВЫВОДИМ ДЕНЬ НЕДЕЛИ if($view_today){ $draw->setFont(BASEPATH."/font/".$font_date); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($today_font_size); $draw->setFillColor("rgb(".$today_font_color.")"); $bg->annotateImage($draw, $today_text_pixel_x, $today_text_pixel_y, 0, mb_strtoupper($days[(date('w'))], 'UTF-8')); } // ВЫВОДИМ ДАТУ if($view_date){ $draw->setFont(BASEPATH."/font/".$font_date); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($date_font_size); $draw->setFillColor("rgb(".$date_font_color.")"); $bg->annotateImage($draw, $date_text_pixel_x, $date_text_pixel_y, 0, mb_strtoupper(date('d ') . $monthes[(date('n'))] . date(' Y'), 'UTF-8')); } // ВЫВОДИМ ВРЕМЯ if($view_clock){ $draw->setFont(BASEPATH."/font/".$font_clock); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($clock_font_size); $draw->setFillColor("rgb(".$clock_font_color.")"); $bg->annotateImage($draw, $clock_text_pixel_x, $clock_text_pixel_y, 0, mb_strtoupper(date('H:i'), 'UTF-8')); } // СОХРАНЯЕМ ФАЙЛ $bg->setImageFormat("png"); $bg->writeImage($output_cover); // --- ЗАГРУЗКА НА СЕРВЕР ------------ $getUrl = getApiMethod('photos.getOwnerCoverPhotoUploadServer', array( 'group_id' => $group_id, 'crop_x2' => '1590' )); setLog('Адресс сервера... '.$getUrl); if($getUrl) { $getUrl = json_decode($getUrl, true); $url = $getUrl['response']['upload_url']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => new CURLFile($output_cover, 'image/jpeg', 'image0'))); $upload = curl_exec( $ch ); curl_close( $ch ); if($upload) { $upload = json_decode($upload, true); $getUrl = getApiMethod('photos.saveOwnerCoverPhoto', array( 'hash' => $upload['hash'], 'photo' => $upload['photo'], )); setLog('Загружаем обложку '.$getUrl); if(stripos($getUrl, 'response":{"images":[{')) { print_r('<p>Динамическая обложка успешно загружена в <a href="https://vk.com/club' . $group_id . '" target="_blank" rel="noopener noreferrer">группу</a></p>' . PHP_EOL); echo '<p><img src="'.'cover/output.png'.'" width="795" height="200"></p>'; setLog('Загружаем обложку в https://vk.com/club'.$group_id); } else { print_r('Ошибка загрузки! '.$getUrl); setLog('Ошибка загрузки! '.$getUrl); } } } Вот код без изменений. Я опирался на пример с выводом времени, числа и недели. Раз они получают данные в неком формате и день недели с функцией, и я решил пойти по такому же примеру: $show_weather = round($weather->main->temp) . '°C'; получает погоду, а это те же цифры и я решил просто подставить и получил рабочий вариант: if($show_weather){ $draw->setFont(BASEPATH."/font/".$font_weather); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($weather_font_size); $draw->setFillColor("rgb(".$weather_font_color.")"); $bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, 0, rtrim($show_weather.'')); если пробую использовать переменную не как выше варианте все ломается, неужели данные переменной $show_weather надо в рисунок превращать, а как же время, дата, неделя обходятся без этого? |
Это бред rtrim($show_weather.''), но в чем проблема выбросить это и явно прописать, например, '12°C', проблемы будут?
|
Цитата:
|
Ну, ладно пусть остается как есть. Вы мне помогли с выводом рисунка, он работает и подумал, а нельзя ли его модернизировать и стал экспериментировать с imagescale для изменения размеров изображения
$img = file_get_contents('http://openweathermap.org/img/wn/' . $icon); $img2 = new Imagick(); $img2->readImageBlob($img); $dest = imagescale($img2, $icon_width, $icon_height); $dest потом подставляя далее вместо $img2 не работает и кажется бредом )) |
Цитата:
$bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, 0, '12°C'); А чем это отличается от $show_weather? Выясняйте, анализируйте, но не пишите чепухи в коде. |
Цитата:
так этот бред еще и работает))) rtrim($show_weather.'') точнее rtrim($show_weather.'')); стоит убрать ' ' и все не работает |
Вложений: 1
Цитата:
$cityname = "Город"; //это переменная со строковым значением, и ее вывод где-то, во что-то, это будет Город '$cityname' - это строка, которая так и будет выведена $cityname. Нет, вы все лепите и лепите эту чушь в коде, удивляясь почему не работает. Это ваши данные, и вывод температуры как вам хочется, а вывод ее один в один по примеру из руководства. $data = json_decode(file_get_contents('https://api.openweathermap.org/data/2.5/weather?id=498817&units=metric&appid=42633145136a94711f8d879deade6bf1&lang=ru')); $show_weather = round($data->main->temp) . '°C'; $image = new Imagick(); $draw = new ImagickDraw(); $pixel = new ImagickPixel('white'); $image->newImage(100, 80, $pixel); $draw->setFont('fonts/tahoma.ttf'); $draw->setFontSize(30); $image->annotateImage($draw, 10, 45, 0, $show_weather); $image->setImageFormat('png'); header('Content-type: image/png'); echo $image; А это результат работы. Выполните этот код отдельно, я сомневаюсь, что у вас он не выполнится должным образом, если вы не добавите в него эту дурь rtrim($show_weather . ' '). |
Вложений: 1
Цитата:
|
вот вы пишите
$cityname = "Город"; //это переменная со строковым значением, и ее вывод где-то, во что-то, это будет Город '$cityname' - это строка, которая так и будет выведена $cityname. как в таком случае выводится дата, время, неделя не превращая ее в рисунок вот пример: if($view_date){ $draw->setFont(BASEPATH."/font/".$font_date); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($date_font_size); $draw->setFillColor("rgb(".$date_font_color.")"); $bg->annotateImage($draw, $date_text_pixel_x, $date_text_pixel_y, 0, mb_strtoupper(date('d ') . $monthes[(date('n'))] . date(' Y'))); переменная $monthes подставляет свое тексты из источника почему $cityname не может быть тем же источником ведь она реально работает но в связке mb_strtoupper или rtrim |
попробуйте на данный пример применить свой метод
|
Хоть дичь что получилась и работает я готов заплатить за ваш нормальный рабочий по всем правилам вариант.
В измененном работает, изменяет координаты, размеры, но единственное не отключается по команде как в этом рабочем примере: //[true - разрешить false - запретить] $view_last_subscriber = true; // Последний подписчик $view_today = false; // День недели $view_date = true; // Число $view_clock = true; // Часы |
Делайте что хотите, а устал уже, так как писать такую чушь и удивляться почему нет текста
Цитата:
Цитата:
|
Цитата:
Цитата:
не хочу вступать в конфронтацию, так как прекрасно понимаю, что нуб в этом, но вы опять же называете чушью, то что РАБОТАЕТ и ОТОБРАЖАЕТ результат, но говорите что это неправильно. Неправильно разве может работать $bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, mb_strtoupper($cityname.' ')); повторяю ЭТО работает |
Вложений: 1
|
Цитата:
Полнейшая чушь это ('$cityname') и "лечение" этого как mb_strtoupper(...). И если первое вам нужно, то зачем вы эту дурь к температуре клеите? Ни кто с вами и не собирается вести военные действия, просто вам нужно начинать учить язык с его основ, а не хвататься сразу за то, в чем вы разобраться не можете. Это JS, но суть та же, выполните: var $cityname = 'Город'; alert($cityname + '\n' + '$cityname') Вопрос - почему во второй строке не выводит Город? |
Цитата:
$cityname = 'Город'; echo $cityname; |
Цитата:
А вот так в обеих случаях будет вывод не строки $cityname, а значения переменной $cityname. var $cityname = 'Город'; alert($cityname + '\n' + `${$cityname}`) Такая возможность появилась в JS не так давно, и при этом строка заключена в обратные косые кавычки. В РНР вывод значений переменных (выполнение кода) в строке доступно давно, но возможно только тогда когда строка заключена не в одинарные, а в двойные кавычки. Именно поэтому простые строки в РНР лучше заключать в одинарные, а не двойные кавычки, чтобы избавить парсер от бесполезного разбора строки. Читайте об этом в разделе руководства по ссылке. Но в данном случае поступать так "$cityname" вместо $cityname при передачи строки в функцию, это такая же глупость, как и rtrim(...) ради вывода. Если вы такие грабли в коде пишите, значит что-то вы упустили. Чудес не бывает, они легко объясняются незнанием, непониманием, невниманием или элементарными ошибками. Мы люди и нам свойственно ошибаться, поэтому нужно внимательно изучить то, что вы написали, проверить что и как вы отдаете в функцию и т.п., и тогда вы обнаружите свой же баг. Именно свой, ибо причиной "такой странности" являетесь вы, а никак не язык РНР или его расширения. Скачивайте руководство РНР, оно в CHM формате на многих языках, скачивайте то что с примерами, и изучайте с самого начала, только так будут познания и опыт, через попу не получится. |
Цитата:
взять просто в двойные кавычки. Спасибо большое - это не сарказм. Даже "аспирантом" стал ))) взял в двойные, чтобы избавить себя от этого звания |
Цитата:
Есть функция, которая ожидает строку, пусть так fun(string). Если вы пишите в коде явно с передачей строки "Текст", то и должны писать fun("Текст") вызывая функцию. Но если эта строка ранее определена в переменной $var, то вызов будет fun($var), обрамлять при этом имя переменной кавычками не надо, это дурь не иначе. |
Цитата:
if($cityname){ //город $draw->setFont(BASEPATH."/font/".$font_city); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($city_font_size); $draw->setFillColor("rgb(".$city_font_color.")"); $bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, "$cityname"); что куда писать? |
$bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, $cityname); На черта вы упорно переменную обрамляете в кавычки? И это когда рядом $city_text_pixel_y без этой чуши и нормально указывается. |
Цитата:
Я выше просил, а как сделать чтобы if($cityname){ //город отключался как сделано со временем, днем и неделей $view_today = false; // День недели $view_date = true; // Число $view_clock = true; // Часы $cityname = false // не отключает |
Цитата:
|
Цитата:
if($view_cityname){ //город $draw->setFont(BASEPATH."/font/".$font_city); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($city_font_size); $draw->setFillColor("rgb(".$city_font_color.")"); $bg->annotateImage($draw, $city_text_pixel_x, $city_text_pixel_y, 0, $cityname); тогда: $view_cityname = false; //отключается |
не могли бы вы подсказать почему получая содержимое из текстового файла не получается вывести как примерами выше, то есть соединить с графикой?
$handle = fopen("statistika/online.txt", "r"); while (!feof($handle)) { $buffer = fgets($handle, 50); echo $buffer; } fclose($handle); -> if($vs){ //статистика $draw->setFont(BASEPATH."/font/".$font_server); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($server_font_size); $draw->setFillColor("rgb(".$server_font_color.")"); $bg->annotateImage($draw, $server_text_pixel_x, $server_text_pixel_y, 0, $buffer); } |
Вы вопросы задает так, слово я ясновидящий. Что значит не получается?
|
Цитата:
$handle = fopen("statistika/online.txt", "r"); я так понимаю чтением занимается функция fgets тестовый файл к примеру содержит такой текст: 123456789 прочитать не более 50 символов, если даже там 10 символов прочитать их и назначить полученное в переменную скажем $buffer чтоб указывая переменную $buffer = 123456789 как то так |
Это для чтения больших файлов, а для содержания 123456... file_get_contents.
|
Цитата:
$handle = file_get_contents('statistika/online.txt', FALSE, NULL, 0, 10); если дописать var_dump($handle); string(10) "1234546789" то что нужно, соответственно прочитал 10 символов начиная с нулевого но вот если переменную вставить чтоб текст наложился, то не выходит, что не так делаю? if($vs){ //статистика $draw->setFont(BASEPATH."/font/".$font_server); $draw->setTextAlignment(Imagick::ALIGN_LEFT); $draw->setFontSize($server_font_size); $draw->setFillColor("rgb(".$server_font_color.")"); *!* $bg->annotateImage($draw, $server_text_pixel_x, $server_text_pixel_y, 0, $handle; */!* } |
Цитата:
|
Цитата:
В рамка веб об CreateObject("Scripting.FileSystemObject") даже и думать не стоит. |
Цитата:
Данных не много чтоб подключать базу. Вообще тогда боюсь потеряться:) . Тут бы попроще разобраться, попроще в плане для вас )) Так как с чтением в переменную, не подскажите верное решение? я думал если в примерах на ранних страницах: $cityname = "Город" то $handle = 123456789 и должно получится, но ... |
Цитата:
Отладкой нужно заниматься на локальном сервере, включив вывод ошибок, анализируйте их и исправляйте. А я не ясновидящий, я не знаю что там у вас происходит и гадать конечно же не буду. |
Цитата:
if($vs) заменить if($handle) и все работает. последняя просьба, направьте в верном направлении, как это сделать для php, потому как для html работает: $fp = fsockopen("127.0.0.1", 1234); if (!$fp) { echo "<b><font color='red'> Оффлайн</font></b>"; } else { echo "<b><font color='green'> Онлайн</font></b>"; } чтоб так же использовать $bg->annotateImage(, , , 0, ; |
И в чем проблема заменить вывод на присвоение его переменной?
= ? \'On\' : \'Off\'; |
Часовой пояс GMT +3, время: 18:32. |