Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Прогноз погоды (https://javascript.ru/forum/project/81557-prognoz-pogody.html)

ALFRED450 16.12.2020 12:20

Цитата:

Сообщение от laimas (Сообщение 531776)
Ну какая еще подсказка нужна? URL изображения известен? Загружайте его на сервер, затем открывайте его в ImageMagick, работайте с ним.

$url = "https://api.openweathermap.org/data/2.5/weather?id=501730&units=metric&appid=42633145136a94711f8d879deade6bf1&lang=ru";

$contents = file_get_contents($url);
$weather=json_decode($contents);

$show_weather = round($weather->main->temp) . '°C';
$icon=$weather->weather[0]->icon.".png";
$today = date("j.m.Y, H:i");
$cityname = $weather->name;
$wind = round($weather->wind->speed) . 'м/с';
$humidity=$weather->main->humidity."%";
$url_icon = '<img src="http://openweathermap.org/img/wn/'.$icon.' "/>';

echo
$url_icon


$icon=$weather->weather[0]->icon.".png";

получает лишь код "icon":"03d" он рандомный и добавляется лишь расширение
в $url_icon = взял путь до папки сайта с граф. файлами добавил переменную кода icon.".png" в итоге прямая ссылка и при:
echo 
$url_icon

на странице отображается изображение
Выходит все загружается.
Даже если я скачаю все png изображения на сервер мне все равно нужно получить нужный файл по коду с переменной $icon и это возвращение к началу, изменится лишь путь к файлам.
Если изображение видно значит оно же загружается, не понятно

laimas 16.12.2020 14:41

Откуда взято это?

$bg->compositeImage($url_icon, Imagick::COMPOSITE_DEFAULT, $weather_icon_pixel_x, $weather_icon_pixel_y);


Что здесь $bg и чем должно быть $url_icon? Вы понимаете, что '<img src="http://openweathermap.org/img/wn/'.$icon.' "/>', это html код, который будет выполнятся только в браузере, а для ImageMagick, это пустой звук и породит ошибку?

Если свой код/примеры вы выдираете из какого-то класса, то изучайте методы этого класса, тут я вам ничем помочь не могу. Если это из руководства РНР, то к этой же функции (compositeImage) на странице ее описания даны и примеры, более чем полные, изучайте. Но не пытайтесь подсовывать ImageMagick фикцию вместо объекта и даже корректный URL, ImageMagick работает только с локальными файлами. То есть, например, получили (загрузили на сервер) картинку:

$img = file_get_contents('http://openweathermap.org/img/wn/' . $icon);
//далее создаем Imagick объект, как там у вас разбирайтесь с этим, пусть для примера его имя $img2
//получаем ресурс загруженного изображения
$img2->readImageBlob($img);
//вот теперь на ранее открытый ресурс, например, $img1, можно накладывать загруженное
$img1->compositeImage($img2, .....

ALFRED450 16.12.2020 15:49

не пинайте вы так уж сильно:( делаю не для себя, для группы чтоб не было так серо все. Нуб в этом деле, что ж поделать. На пенсии не все же время в танки играть) Кучу вариантов с этого примера пробывал, подставлял, менял, блин не в какую, не там запятая и ....

laimas 16.12.2020 16:58

Я не пинаю, но вы оперируете с одной стороны кодом нешуточным, с другой стороны пытаетесь воткнуть в него непотребное.

Исследуйте ошибки, исправляйте их, что я еще могу сказать. Ну я же не стану вдаваться во все, что тут написано, так как непосредственно к проблеме оно отношения не имеет.

Если $bg и $last_subscriber_photo_1, это объекты Imagick, координаты наложения в пределах изображения приемника, то проблем наложения быть не должно.

PS. Или все "складывается как надо", а результат не виден в браузере?

ALFRED450 16.12.2020 18:58

Цитата:

Сообщение от laimas (Сообщение 531795)
Я не пинаю, но вы оперируете с одной стороны кодом нешуточным, с другой стороны пытаетесь воткнуть в него непотребное.

Исследуйте ошибки, исправляйте их, что я еще могу сказать. Ну я же не стану вдаваться во все, что тут написано, так как непосредственно к проблеме оно отношения не имеет.

Если $bg и $last_subscriber_photo_1, это объекты Imagick, координаты наложения в пределах изображения приемника, то проблем наложения быть не должно.

PS. Или все "складывается как надо", а результат не виден в браузере?

использовал как есть переменные,
$img = file_get_contents('http://openweathermap.org/img/wn/' . $icon);
$img2->readImageBlob($img);


далее

if($img){
    $bg->compositeImage($img2, Imagick::COMPOSITE_DEFAULT, $weather_icon_pixel_x, $weather_icon_pixel_x);
}


Fatal error: Uncaught Error: Call to a member function readImageBlob() on null in

смотря на весь код не вижу использования readImageBlob, а ведь то же используется получение изображения и "склеивание"

laimas 16.12.2020 19:40

Сначала

$img2 = new Imagick();

и только затем

$img2->readImageBlob($img);

ALFRED450 16.12.2020 20:18

Цитата:

Сообщение от laimas (Сообщение 531803)
Сначала

$img2 = new Imagick();

и только затем

$img2->readImageBlob($img);

Аллилуйя, большая благодарность . Получилось все.
Вот такой вопрос:
mb_strtoupper выводит все в верхний регистр
почитал про текст в PHP и ничего не нашел для обычного вывода как использовать rtrim (Удаляет пробелы (или другие символы) из конца строки), для того чтоб текст оставался без изменений.

laimas 16.12.2020 20:38

Не понял, в чем проблема?

ALFRED450 16.12.2020 20:41

Цитата:

Сообщение от laimas (Сообщение 531805)
Не понял, в чем проблема?

$bg->annotateImage($draw, $clock_text_pixel_x, $clock_text_pixel_y, 0, mb_strtoupper(date('H:i'), 'UTF-8'));

текст выводит в ВЕРХНИЙ регистр

laimas 16.12.2020 20:49

И что?


Часовой пояс GMT +3, время: 17:36.