16.12.2020, 12:20
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
Ну какая еще подсказка нужна? 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 и это возвращение к началу, изменится лишь путь к файлам.
Если изображение видно значит оно же загружается, не понятно
Последний раз редактировалось ALFRED450, 16.12.2020 в 12:24.
|
|
16.12.2020, 14:41
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Откуда взято это?
$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, .....
|
|
16.12.2020, 15:49
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
не пинайте вы так уж сильно делаю не для себя, для группы чтоб не было так серо все. Нуб в этом деле, что ж поделать. На пенсии не все же время в танки играть) Кучу вариантов с этого примера пробывал, подставлял, менял, блин не в какую, не там запятая и ....
Последний раз редактировалось ALFRED450, 16.12.2020 в 15:53.
|
|
16.12.2020, 16:58
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Я не пинаю, но вы оперируете с одной стороны кодом нешуточным, с другой стороны пытаетесь воткнуть в него непотребное.
Исследуйте ошибки, исправляйте их, что я еще могу сказать. Ну я же не стану вдаваться во все, что тут написано, так как непосредственно к проблеме оно отношения не имеет.
Если $bg и $last_subscriber_photo_1, это объекты Imagick, координаты наложения в пределах изображения приемника, то проблем наложения быть не должно.
PS. Или все "складывается как надо", а результат не виден в браузере?
Последний раз редактировалось laimas, 16.12.2020 в 17:03.
|
|
16.12.2020, 18:58
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
Я не пинаю, но вы оперируете с одной стороны кодом нешуточным, с другой стороны пытаетесь воткнуть в него непотребное.
Исследуйте ошибки, исправляйте их, что я еще могу сказать. Ну я же не стану вдаваться во все, что тут написано, так как непосредственно к проблеме оно отношения не имеет.
Если $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, а ведь то же используется получение изображения и "склеивание"
|
|
16.12.2020, 19:40
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сначала
$img2 = new Imagick();
и только затем
$img2->readImageBlob($img);
|
|
16.12.2020, 20:18
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
Сначала
$img2 = new Imagick();
и только затем
$img2->readImageBlob($img);
|
Аллилуйя, большая благодарность . Получилось все.
Вот такой вопрос:
mb_strtoupper выводит все в верхний регистр
почитал про текст в PHP и ничего не нашел для обычного вывода как использовать rtrim (Удаляет пробелы (или другие символы) из конца строки), для того чтоб текст оставался без изменений.
|
|
16.12.2020, 20:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Не понял, в чем проблема?
|
|
16.12.2020, 20:41
|
Аспирант
|
|
Регистрация: 07.12.2020
Сообщений: 72
|
|
Сообщение от laimas
|
Не понял, в чем проблема?
|
$bg->annotateImage($draw, $clock_text_pixel_x, $clock_text_pixel_y, 0, mb_strtoupper(date('H:i'), 'UTF-8'));
текст выводит в ВЕРХНИЙ регистр
|
|
16.12.2020, 20:49
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
И что?
|
|
|
|