17.12.2020, 14:02
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
Не вижу тут функций, вижу условия.
if(false) { выполнятся не будет, где-то вы косячите, ищите.
rtrim($show_weather.' ', 'UTF-8') - это полнейшая чушь, как и mb_strtoupper(date('H:i'), 'UTF-8'), ну и остальное подобное. Ну это просто какая-то дичь.
|
так это не я делал mb_strtoupper( date('H:i'), ' UTF-8')
оставил как было
единственное мое rtrimтак как я хотел уйти от верхнего регистра, не найдя другого способа
по вашей рекомендации пробовал без mb_strtoupper
$bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, '$show_weather') результат вышел с ошибкой.
В кавычка, скобках, между точек, все равно ошибка
|
|
17.12.2020, 14:27
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ALFRED450
|
единственное мое rtrimтак как я хотел уйти от верхнего регистра
|
Ну-ка читаем https://www.php.net/manual/ru/function.rtrim.php.
Во-первых какой смысл добавлять справа пробел, чтобы потом его вырезать?
Во-вторых второй параметр функции не задает кодировку, а указывает символы, которые будут удалены справа. Пробела у вас не указано, а значит ...
У цифр, управляющих символов и знаков, нет ни верхнего регистра, нет отличия и в коде в других кодировках. Поэтому "в верхний регистр" да еще с учетом UTF-8 цифр date('H:i'), это глупость неимоверная.
А не работает у вас без этого хлама потому, что вы пишите код с ошибкой - это явно прописываемое строковое значение нужно обрамлять кавычками, но имя переменной почему в кавычках '$show_weather '?
Читайте о функциях, которые используете, вы делаете явные ошибки в задании параметров, а проблемы этого устраняете какими граблями.
|
|
17.12.2020, 14:53
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
Ну-ка читаем https://www.php.net/manual/ru/function.rtrim.php.
Во-первых какой смысл добавлять справа пробел, чтобы потом его вырезать?
Во-вторых второй параметр функции не задает кодировку, а указывает символы, которые будут удалены справа. Пробела у вас не указано, а значит ...
У цифр, управляющих символов и знаков, нет ни верхнего регистра, нет отличия и в коде в других кодировках. Поэтому "в верхний регистр" да еще с учетом UTF-8 цифр date('H:i'), это глупость неимоверная.
А не работает у вас без этого хлама потому, что вы пишите код с ошибкой - это явно прописываемое строковое значение нужно обрамлять кавычками, но имя переменной почему в кавычках '$show_weather'?
Читайте о функциях, которые используете, вы делаете явные ошибки в задании параметров, а проблемы этого устраняете какими граблями.
|
вы не поняли весь текст UTF-8 цифр date('H:i') работает, как и дата, время, работает если не трогать, как только лезу и убираю mb_strtoupper все ломается, я понимаю что часам которые показывают цифрами, не нужен РЕГИСТР.
Цитата:
|
но имя переменной почему в кавычках '$show_weather'?
|
я не могу написать все варианты в кавычка, точках , скобках и прочее , что я перепробовал, убираю функцию, и пробую и ничего.
|
|
17.12.2020, 15:03
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ALFRED450
|
вы не поняли весь текст UTF-8 цифр date('H:i')
|
Не городите ерунды, текст это одно, причем не только текст, но и сам скрипт должен быть сохранен в UTF. Дата/время причем тут, если она не содержится символов кроме знаков и цифр?
Читаем тут 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'))?
Сколько еще можно говорить, что вы делаете преобразования там, где они не имеют никакого значения, это просто глупости. Не делайте ошибок в коде, вот ваши проблемы.
|
|
17.12.2020, 15:55
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
Не городите ерунды, текст это одно, причем не только текст, но и сам скрипт должен быть сохранен в UTF. Дата/время причем тут, если она не содержится символов кроме знаков и цифр?
Читаем тут 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'))]));
|
|
17.12.2020, 16:36
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
// Разрешение на отображение ошибок на экране
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 надо в рисунок превращать, а как же время, дата, неделя обходятся без этого?
|
|
17.12.2020, 19:42
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Это бред rtrim($show_weather.''), но в чем проблема выбросить это и явно прописать, например, '12°C', проблемы будут?
|
|
17.12.2020, 21:22
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
Это бред rtrim($show_weather.''), но в чем проблема выбросить это и явно прописать, например, '12°C', проблемы будут?
|
вот так бы с возрастом было, всегда 12 , температура то постоянно меняется
|
|
17.12.2020, 21:32
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Ну, ладно пусть остается как есть. Вы мне помогли с выводом рисунка, он работает и подумал, а нельзя ли его модернизировать и стал экспериментировать с 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 не работает и кажется бредом ))
|
|
17.12.2020, 21:45
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ALFRED450
|
температура то постоянно меняется
|
Да наплевать что она меняется, это ведь для проверки, потому, что rtrim($show_weather.''), даже слов нет чтобы выразить какой это бред. Вот так работает?
$bg->annotateImage($draw, $weather_text_pixel_x, $weather_text_pixel_y, 0, '12°C');
А чем это отличается от $show_weather? Выясняйте, анализируйте, но не пишите чепухи в коде.
|
|
|
|