Цитата:
|
Цитата:
Что тут может быть нового, так это тернарный оператор: $fp = $fp ? 'On' : 'Off'; а можно и так $fp = fsockopen(...) ? 'On' : 'Off'; вместо if ..., что более лаконично. Но о нем также подробно написано в руководстве. |
Цитата:
$fp = fsockopen("127.0.0.1", 1234) ? 'On=else [color=red] Онлайн[/color] ' : 'Off=if (!$fp) [color=red] Оффлайн[/color]'; Естественно он выдал как текст, убрав одинарные кавычки вылился в ошибку. Понимаю что бред состряпал. |
Подскажите пожалуйста, в коде есть получение изображения и установка размеров в зависимости от настроек
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_width = 150; // Высота аватарки $last_subscriber_height = 150; // Аватарки [true - круглые false - квадратные] $roundingOff = true; я получаю изображение так: $copy_icon = file_get_contents('http://openweathermap.org/img/wn/' . $icon); $show_icon = new Imagick(); $show_icon->readImageBlob($copy_icon); roundingOff я так понимаю не совсем подходит, чтоб просто изменить размеры, так как цель не закруглять углы. Подскажите пожалуйста какую функцию применить, для изменения размеров полученного изображения $show_icon |
if($view_icon){
if($roundingOff==true) RoundingOff($show_icon, $weather_icon_width ,$weather_icon_height); } $bg->compositeImage($show_icon, Imagick::COMPOSITE_DEFAULT, $weather_icon_pixel_x, $weather_icon_pixel_y); размер меняет, ошибки не сыпятся , но мне кажется что на чушь похоже |
Цитата:
|
Цитата:
изображение получено $copy_icon = file_get_contents('http://openweathermap.org/img/wn/' . $icon); $show_icon = new Imagick(); $show_icon->readImageBlob($copy_icon); |
https://www.php.net/manual/ru/imagick.scaleimage.php
Давно пора скачать документацию и искать в ней, я что швейцаром должен быть? И вообще, для такого простого Imagick, у которого много функций недокументированных, да еще не понимания ничего, это круто. Есть GD, для таких плевых дел его будет более чем достаточно, и разобраться в нем намного проще чем в Imagick. |
Здравствуйте, снова вопрос про погоду
получаю направление ветра в градусах и пробую перевести в направление, подскажите пожалуйста, как правильно написать и где перемудрил $url = "http://api.openweathermap.org/data/2.5/weather?id=".$cityId."&lang=".$lang."&units=".$units."&APPID=" . $apiKey; // делаем запрос к апи $contents = file_get_contents($url); $weather=json_decode($contents); $deg=$weather->wind->deg; //получаем направление ветра в градусах function getCardinalDirection($deg) { const directions = ['↑ N', '↗ NE', '→ E', '↘ SE', '↓ S', '↙ SW', '← W', '↖ NW']; return directions[Math.round($deg / 45) % 8]; } //направление ветра if($view_deg){ $draw->setFont(BASEPATH."/font/".$font_deg); $draw->setTextAlignment(Imagick::ALIGN_CENTER); $draw->setFontSize($deg_font_size); $draw->setFillColor("rgb(".$deg_font_color.")"); *!* $bg->annotateImage($draw, $deg_text_pixel_x, $deg_text_pixel_y, 0, $deg); */!* } получаю ошибку константы |
Вы когда в конце концов начнете читать справочник языка? Разве сложно заглянуть сюда, чтобы понять где у вас ошибки или отсебятины?
Это как в этой теме, типов то много, а значит вполне можно и в одну строку: list(...) = exp(...) ? array(...) : array(...); А чтобы понимать это, нужно изучать язык. Но стоит повторить, что в данном случае так поступать, это просто расточительство. |
Цитата:
к слову, так и не вышло с направлением по предложенным вариантам на другом форуме, если у читающих мануал и умеющих не выходит ... |
С константой нет проблем, надеюсь не сложно было разобраться?
Вот только вопрос - а зачем она там вообще нужна, константа? Такой же вопрос и по поводу: if(...) { $a = ... $b = ... } else { $a = ... .... зачем простое условие, выполняющее с легкостью задачу, при этом читабельность кода 100%, усложнять конструкцией, от которой в данном случае нет ни какой пользы, просто будут выполнятся еще, лишние, операции? Ради "красивости кода в одну строку"? Если по такому принципу писать код, тогда все пропало. Ну а ради понимания, то ничего сложного. Записать "как есть" это условие тернарным оператором не позволяет синтаксис. Но оператор может возвращать и массив, а значит можно определить в нем значения для переменных $a, $b, ... массивом. Проверить это ведь не сложно, выполнив простое: $a = true ? ['a', 'b'] : ['c', 'd']; var_dump($a); // array(2) { [0]=> string(1) "a" [1]=> string(1) "b" } А к возвращаемому массиву применить list(), тогда: list($a, $b) = false ? ['a', 'b'] : ['c', 'd']; echo $a . ' / ' . $b; // c / d Есть в этом что-то очень сложное для понимания? Читайте, выполняйте примеры, вникайте, и понимание будет обязательно. |
Цитата:
function getCardinalDirection($deg) { $array = array('↑ С', '? СЗ', '→ В', '? ЮВ', '↓ Ю', '? ЮЗ', '← З', '↖СЗ'); return $array[round(($deg / 45) % 8)]; } $a = getCardinalDirection($deg); $deg2 = $deg + 180; if($deg >= 180) $deg2 = $deg - 180; $b = getCardinalDirection($deg2); у меня северный, на погодном сервисе южный |
все разобрался, после
$a = getCardinalDirection($deg); лишнее, тогда работает верно |
Подскажите еще один момент, как и ранее писал получаю направление
в коде все верно и работает function getCardinalDirection($deg) { $array = array('С', 'СВ', 'В', 'ЮВ', 'Ю', 'ЮЗ', 'З', 'СЗ'); return $array[round(($deg / 45) % 8)]; } $a = getCardinalDirection($deg); echo '<head> <style> .img-arrow { transform: rotate('.$deg.'deg); } </style> </head>'; // прочее echo '<img src="icons/arrow.png" alt="" class="img-arrow">'; полученное изображение тоже крутится. Но как вы говорили такой способ для получения изображения не совсем верный для php, я как и ранее использовал вашу подсказку , но как ее вращать из полученных данных не понятно $img = file_get_contents('icons/arrow.png'); $img2 = new Imagick(); $img2->readImageBlob($img); |
Цитата:
|
Подскажите как использовать одну функцию для двух показаний. Ругается на повтор.
function getCardinalDirection($deg) { $array = array('С', 'СВ', 'В', 'ЮВ', 'Ю', 'ЮЗ', 'З', 'СЗ'); return $array[round(($deg / 45) % 8)]; } $a = getCardinalDirection($deg); function getCardinalDirection($deg) { $array = array('strelka/N.png', 'strelka/NE.png', 'strelka/E.png', 'strelka/SE.png', 'strelka/S.png', 'strelka/SW.png', 'strelka/W.png', 'strelka/NW.png'); return $array[round(($deg / 45) % 8)]; } $ab = getCardinalDirection($deg); $img = file_get_contents($ab); $icon_deg = new Imagick(); $icon_deg->readImageBlob($img); |
Цитата:
Это $img = file_get_contents($ab) было необходимо, когда изображение было удаленным. Зачем же заниматься этим с локальными файлами? |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 18:31. |