если присмотреться видимо все стрелки на погодных сайтах с Awesome взят и крутятся стилями, но это сделать на 10 страниц дискуссии )) --- Добавлено --- сложно, много чего менять?
Я же давал ссылку. Там готовое решение, осталось подобрать иконку указывающую на север и в страницe вставить: Код (Text): <?php echo '<head> <style> .img-arrow { transform: rotate('.$deg.'deg); } </style> </head>'; // прочее echo '<img src="image/arrow.png" alt="" class="img-arrow">'; ?> В этом случае скрипт выше не нужен.
спасибо работает, только почему то правильно показывает когда иконка на юг работает и показывает на странице, в своем случае я png получаю по другому потому что происходит слияние данных, в том числе "стрелки" в один рисунок. Вот так я получаю изображение: $img = file_get_contents('image/arrow.png'); $img2 = new Imagick(); $img2->readImageBlob($img); как мне его повернуть согласно вашего примера выше?
Возможно, что я неправильно понимаю "направление ветра". Вот проверенный, рабочий скрипт. Иконка прилагается, если нужно, то разверните её в требуемом направлении, например в Paint. PHP: <?php function getCardinalDirection($deg) { $array = array('N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'); return $array[round(($deg / 45) % 8)]; } $deg = 0; if(isset($_GET['deg'])) $deg = sprintf('%d', $_GET['deg']); $alt = getCardinalDirection($deg); echo '<html> <head> <style> .img-arrow { transform: rotate('.$deg.'deg); } </style> </head> <body>'; // прочее echo '<img src="arrow.png" alt="'.$alt.'" class="img-arrow">'.$alt; ?> <br><br> <form> <input type=text name="deg" maxlength="3" size=3 value="0"> <input type=submit value="go"> </form> </body> </html>
ранее скрипт был тоже правильный и рабочий, и стрелка поворачивается, дело в другом скрипт я вывел и он прорисовывается на обложке как надо, указывает направление ветра NW (пример) а вот стрелка, она тоже работает, но висит просто на странице, где выполняется все это, я допустим иконку погоду получаю new Imagick, далее указываю назначенную переменную и она прорисовывается в общую картину, как и все остальная информация и это все в общей массе просто один рисунок jpg c <img src="arrow.png" в php это как то не прокатывает, вот и спрашивал как крутануть arrow.png имея вот такой код $img = file_get_contents('image/arrow.png'); $img2 = new Imagick(); $img2->readImageBlob($img); --- Добавлено ---
Извините, с imagick никогда не работал - PHP довольно убог в том, что касается обработки мультимедиа.
может знаете как крутануть file_get_contents("https://s.cdpn.io/3/kiwi.svg"); с помощью разделеных 8 направлений $array[round(($deg/45)%8)]; вроде с svg можно работать как с шрифтами
подскажите пожалуйста еще такой момент вот получаю $a направление и $b м/с, переменные имеют числовые значения вывожу в рисунок PHP: $bg->annotateImage($draw, $b_text_pixel_x, $b_text_pixel_y, 0, $b);//работает при попытке добавить следом направление, почему то вызывает ошибку, что неправильно? $bg->annotateImage($draw, $a_text_pixel_x, $a_text_pixel_y, 0, $b, $a); как сделать чтоб прописались вместе?
немного не ясно что за переменные $s, а не могли бы вы на примере этой строки показать как бы выглядело с вашим примером $bg->annotateImage($draw, $a_text_pixel_x, $a_text_pixel_y, 0, $b. ' ' .$a); и еще один вопрос, вы мне помогли с направлениями, но есть еще один пример, где направление будет указываться от того где указал в ручную диапазон градусов, но я так понимаю это не php. Это ваш рабочий Код (Text): function getCardinalDirection($deg) { $array = array('N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'); return $array[round(($deg / 45) % 8)]; } $alt = getCardinalDirection($deg); как правильно будет с этим примером? Код (Text): def wind_deg_to_str1(deg): elif deg >= 11.25 and deg < 56.25: return 'NE' elif deg >= 56.25 and deg < 101.25: return 'E' elif deg >= 101.25 and deg < 146.25: return 'SE' elif deg >= 146.25 and deg < 191.25: return 'S' elif deg >= 191.25 and deg < 236.25: return 'SW' elif deg >= 236.25 and deg < 281.25: return 'W' elif deg >= 281.25 and deg < 326.25: return 'NW' else: return 'N'
$b. ' ' .$a замените на $c Это на Питоне. И не совсем подходит к вашему случаю - у вас градусы задаются в целых числах. Сама же эта функция, переписанная на PHP, выдаст точно такой же результат как и предыдущая. https://www.php.net/manual/ru/function.sprintf.php - здесь полная информация.