ESPHome
2025.4.0
|
Download an image from a given URL, and decode it using the specified decoder. More...
#include <online_image.h>
Public Member Functions | |
OnlineImage (const std::string &url, int width, int height, ImageFormat format, image::ImageType type, image::Transparency transparency, uint32_t buffer_size) | |
Construct a new OnlineImage object. More... | |
void | draw (int x, int y, display::Display *display, Color color_on, Color color_off) override |
void | update () override |
void | loop () override |
void | map_chroma_key (Color &color) |
void | set_url (const std::string &url) |
Set the URL to download the image from. More... | |
void | set_placeholder (image::Image *placeholder) |
Set the image that needs to be shown as long as the downloaded image is not available. More... | |
void | release () |
Release the buffer storing the image. More... | |
size_t | resize_download_buffer (size_t size) |
Resize the download buffer. More... | |
void | add_on_finished_callback (std::function< void()> &&callback) |
void | add_on_error_callback (std::function< void()> &&callback) |
![]() | |
PollingComponent () | |
PollingComponent (uint32_t update_interval) | |
Initialize this polling component with the given update interval in ms. More... | |
virtual void | set_update_interval (uint32_t update_interval) |
Manually set the update interval in ms for this polling object. More... | |
void | call_setup () override |
virtual uint32_t | get_update_interval () const |
Get the update interval in ms of this sensor. More... | |
void | start_poller () |
void | stop_poller () |
![]() | |
virtual void | setup () |
Where the component's initialization should happen. More... | |
virtual void | dump_config () |
virtual float | get_setup_priority () const |
priority of setup(). More... | |
float | get_actual_setup_priority () const |
void | set_setup_priority (float priority) |
virtual float | get_loop_priority () const |
priority of loop(). More... | |
void | call () |
virtual void | on_shutdown () |
virtual void | on_safe_shutdown () |
uint32_t | get_component_state () const |
virtual void | mark_failed () |
Mark this component as failed. More... | |
void | mark_failed (const char *message) |
bool | is_failed () const |
bool | is_ready () const |
virtual bool | can_proceed () |
bool | status_has_warning () const |
bool | status_has_error () const |
void | status_set_warning (const char *message="unspecified") |
void | status_set_error (const char *message="unspecified") |
void | status_clear_warning () |
void | status_clear_error () |
void | status_momentary_warning (const std::string &name, uint32_t length=5000) |
void | status_momentary_error (const std::string &name, uint32_t length=5000) |
bool | has_overridden_loop () const |
void | set_component_source (const char *source) |
Set where this component was loaded from for some debug messages. More... | |
const char * | get_component_source () const |
Get the integration where this component was declared as a string. More... | |
![]() | |
Image (const uint8_t *data_start, int width, int height, ImageType type, Transparency transparency) | |
Color | get_pixel (int x, int y, Color color_on=display::COLOR_ON, Color color_off=display::COLOR_OFF) const |
int | get_width () const override |
int | get_height () const override |
const uint8_t * | get_data_start () const |
ImageType | get_type () const |
int | get_bpp () const |
size_t | get_width_stride () const |
Return the stride of the image in bytes, that is, the distance in bytes between two consecutive rows of pixels. More... | |
bool | has_transparency () const |
lv_img_dsc_t * | get_lv_img_dsc () |
![]() | |
Parented () | |
Parented (esphome::http_request::HttpRequestComponent *parent) | |
esphome::http_request::HttpRequestComponent * | get_parent () const |
Get the parent of this object. More... | |
void | set_parent (esphome::http_request::HttpRequestComponent *parent) |
Set the parent of this object. More... | |
Protected Member Functions | |
bool | validate_url_ (const std::string &url) |
uint32_t | get_buffer_size_ () const |
int | get_buffer_size_ (int width, int height) const |
int | get_position_ (int x, int y) const |
ESPHOME_ALWAYS_INLINE bool | is_auto_resize_ () const |
size_t | resize_ (int width, int height) |
Resize the image buffer to the requested dimensions. More... | |
void | draw_pixel_ (int x, int y, Color color) |
Draw a pixel into the buffer. More... | |
void | end_connection_ () |
![]() | |
virtual void | call_loop () |
virtual void | call_dump_config () |
void | set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f) |
Set an interval function with a unique name. More... | |
void | set_interval (uint32_t interval, std::function< void()> &&f) |
bool | cancel_interval (const std::string &name) |
Cancel an interval function. More... | |
void | set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
Set an retry function with a unique name. More... | |
void | set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
bool | cancel_retry (const std::string &name) |
Cancel a retry function. More... | |
void | set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f) |
Set a timeout function with a unique name. More... | |
void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
bool | cancel_timeout (const std::string &name) |
Cancel a timeout function. More... | |
void | defer (const std::string &name, std::function< void()> &&f) |
Defer a callback to the next loop() call. More... | |
void | defer (std::function< void()> &&f) |
Defer a callback to the next loop() call. More... | |
bool | cancel_defer (const std::string &name) |
Cancel a defer callback using the specified name, name must not be empty. More... | |
![]() | |
bool | get_binary_pixel_ (int x, int y) const |
Color | get_rgb_pixel_ (int x, int y) const |
Color | get_rgb565_pixel_ (int x, int y) const |
Color | get_grayscale_pixel_ (int x, int y) const |
Protected Attributes | |
RAMAllocator< uint8_t > | allocator_ {} |
CallbackManager< void()> | download_finished_callback_ {} |
CallbackManager< void()> | download_error_callback_ {} |
std::shared_ptr< http_request::HttpContainer > | downloader_ {nullptr} |
std::unique_ptr< ImageDecoder > | decoder_ {nullptr} |
uint8_t * | buffer_ |
DownloadBuffer | download_buffer_ |
size_t | download_buffer_initial_size_ |
This is the initial size of the download buffer, not the current size. More... | |
const ImageFormat | format_ |
image::Image * | placeholder_ {nullptr} |
std::string | url_ {""} |
const int | fixed_width_ |
width requested on configuration, or 0 if non specified. More... | |
const int | fixed_height_ |
height requested on configuration, or 0 if non specified. More... | |
int | buffer_width_ |
Actual width of the current image. More... | |
int | buffer_height_ |
Actual height of the current image. More... | |
time_t | start_time_ |
![]() | |
uint32_t | update_interval_ |
![]() | |
uint32_t | component_state_ {0x0000} |
State of this component. More... | |
float | setup_priority_override_ {NAN} |
const char * | component_source_ {nullptr} |
std::string | error_message_ {} |
![]() | |
int | width_ |
int | height_ |
ImageType | type_ |
const uint8_t * | data_start_ |
Transparency | transparency_ |
size_t | bpp_ {} |
size_t | stride_ {} |
lv_img_dsc_t | dsc_ {} |
![]() | |
esphome::http_request::HttpRequestComponent * | parent_ |
Friends | |
bool | ImageDecoder::set_size (int width, int height) |
void | ImageDecoder::draw (int x, int y, int w, int h, const Color &color) |
Download an image from a given URL, and decode it using the specified decoder.
The image will then be stored in a buffer, so that it can be re-displayed without the need to re-download or re-decode.
Definition at line 39 of file online_image.h.
esphome::online_image::OnlineImage::OnlineImage | ( | const std::string & | url, |
int | width, | ||
int | height, | ||
ImageFormat | format, | ||
image::ImageType | type, | ||
image::Transparency | transparency, | ||
uint32_t | buffer_size | ||
) |
Construct a new OnlineImage object.
url | URL to download the image from. |
width | Desired width of the target image area. |
height | Desired height of the target image area. |
format | Format that the image is encoded in ( |
buffer_size | Size of the buffer used to download the image. |
Definition at line 33 of file online_image.cpp.
void esphome::online_image::OnlineImage::add_on_error_callback | ( | std::function< void()> && | callback | ) |
Definition at line 332 of file online_image.cpp.
void esphome::online_image::OnlineImage::add_on_finished_callback | ( | std::function< void()> && | callback | ) |
Definition at line 328 of file online_image.cpp.
|
overridevirtual |
Reimplemented from esphome::image::Image.
Definition at line 45 of file online_image.cpp.
|
protected |
Draw a pixel into the buffer.
This is used by the decoder to fill the buffer that will later be displayed by the draw
method. This will internally convert the supplied 32 bit RGBA color into the requested image storage format.
x | Horizontal pixel position. |
y | Vertical pixel position. |
color | 32 bit color to put into the pixel. |
Definition at line 246 of file online_image.cpp.
|
protected |
Definition at line 311 of file online_image.cpp.
|
inlineprotected |
Definition at line 97 of file online_image.h.
|
inlineprotected |
Definition at line 98 of file online_image.h.
|
inlineprotected |
Definition at line 100 of file online_image.h.
|
inlineprotected |
Definition at line 102 of file online_image.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 192 of file online_image.cpp.
void esphome::online_image::OnlineImage::map_chroma_key | ( | Color & | color | ) |
Definition at line 233 of file online_image.cpp.
void esphome::online_image::OnlineImage::release | ( | ) |
Release the buffer storing the image.
The image will need to be downloaded again to be able to be displayed.
Definition at line 53 of file online_image.cpp.
|
protected |
Resize the image buffer to the requested dimensions.
The buffer will be allocated if not existing. If the dimensions have been fixed in the yaml config, the buffer will be created with those dimensions and not resized, even on request. Otherwise, the old buffer will be deallocated and a new buffer with the requested allocated
width | |
height |
Definition at line 67 of file online_image.cpp.
|
inline |
Resize the download buffer.
size | The new size for the download buffer. |
Definition at line 87 of file online_image.h.
|
inline |
Set the image that needs to be shown as long as the downloaded image is not available.
placeholder | Pointer to the (to show as placeholder. |
Definition at line 74 of file online_image.h.
|
inline |
Set the URL to download the image from.
Definition at line 62 of file online_image.h.
|
overridevirtual |
Implements esphome::PollingComponent.
Definition at line 97 of file online_image.cpp.
|
protected |
Definition at line 320 of file online_image.cpp.
|
friend |
|
friend |
|
protected |
Definition at line 95 of file online_image.h.
|
protected |
Definition at line 140 of file online_image.h.
|
protected |
Actual height of the current image.
If fixed_height_ is specified, this will be equal to it; otherwise it will be set once the decoding starts and the original size is known. This needs to be separate from "BaseImage::get_height()" because the latter must return 0 until the image has been decoded (to avoid showing partially decoded images).
Definition at line 175 of file online_image.h.
|
protected |
Actual width of the current image.
If fixed_width_ is specified, this will be equal to it; otherwise it will be set once the decoding starts and the original size is known. This needs to be separate from "BaseImage::get_width()" because the latter must return 0 until the image has been decoded (to avoid showing partially decoded images).
Definition at line 166 of file online_image.h.
|
protected |
Definition at line 138 of file online_image.h.
|
protected |
Definition at line 141 of file online_image.h.
|
protected |
This is the initial size of the download buffer, not the current size.
The download buffer can be resized at runtime; the download_buffer_initial_size_ will not change even if the download buffer has been resized.
Definition at line 147 of file online_image.h.
|
protected |
Definition at line 135 of file online_image.h.
|
protected |
Definition at line 134 of file online_image.h.
|
protected |
Definition at line 137 of file online_image.h.
|
protected |
height requested on configuration, or 0 if non specified.
Definition at line 157 of file online_image.h.
|
protected |
width requested on configuration, or 0 if non specified.
Definition at line 155 of file online_image.h.
|
protected |
Definition at line 149 of file online_image.h.
|
protected |
Definition at line 150 of file online_image.h.
|
protected |
Definition at line 177 of file online_image.h.
|
protected |
Definition at line 152 of file online_image.h.