ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
esphome::online_image::OnlineImage Class Reference

Download an image from a given URL, and decode it using the specified decoder. More...

#include <online_image.h>

Inheritance diagram for esphome::online_image::OnlineImage:
esphome::PollingComponent esphome::runtime_image::RuntimeImage esphome::Parented< esphome::http_request::HttpRequestComponent > esphome::Component esphome::image::Image esphome::display::BaseImage

Public Member Functions

 OnlineImage (const std::string &url, int width, int height, runtime_image::ImageFormat format, image::ImageType type, image::Transparency transparency, image::Image *placeholder, uint32_t buffer_size, bool is_big_endian=false)
 Construct a new OnlineImage object.
 
void update () override
 
void loop () override
 
void set_url (const std::string &url)
 Set the URL to download the image from.
 
template<typename V >
void add_request_header (const std::string &header, V value)
 Add the request header.
 
void release ()
 Release the buffer storing the image.
 
void add_on_finished_callback (std::function< void(bool)> &&callback)
 
void add_on_error_callback (std::function< void()> &&callback)
 
- Public Member Functions inherited from esphome::PollingComponent
 PollingComponent ()
 
 PollingComponent (uint32_t update_interval)
 Initialize this polling component with the given update interval in ms.
 
virtual void set_update_interval (uint32_t update_interval)
 Manually set the update interval in ms for this polling object.
 
void call_setup () override
 
virtual uint32_t get_update_interval () const
 Get the update interval in ms of this sensor.
 
void start_poller ()
 
void stop_poller ()
 
- Public Member Functions inherited from esphome::Component
virtual void setup ()
 Where the component's initialization should happen.
 
virtual void dump_config ()
 
virtual float get_setup_priority () const
 priority of setup().
 
float get_actual_setup_priority () const
 
void set_setup_priority (float priority)
 
virtual float get_loop_priority () const
 priority of loop().
 
void call ()
 
virtual void on_shutdown ()
 
virtual void on_safe_shutdown ()
 
virtual bool teardown ()
 Called during teardown to allow component to gracefully finish operations.
 
virtual void on_powerdown ()
 Called after teardown is complete to power down hardware.
 
uint8_t get_component_state () const
 
void reset_to_construction_state ()
 Reset this component back to the construction state to allow setup to run again.
 
bool is_in_loop_state () const
 Check if this component has completed setup and is in the loop state.
 
bool is_idle () const
 Check if this component is idle.
 
void mark_failed ()
 Mark this component as failed.
 
 ESPDEPRECATED ("Use mark_failed(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void mark_failed(const char *message)
 
void mark_failed (const LogString *message)
 
void disable_loop ()
 Disable this component's loop.
 
void enable_loop ()
 Enable this component's loop.
 
void enable_loop_soon_any_context ()
 Thread and ISR-safe version of enable_loop() that can be called from any context.
 
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=nullptr)
 
void status_set_warning (const LogString *message)
 
void status_set_error ()
 
 ESPDEPRECATED ("Use status_set_error(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary " "strings. Will stop working in 2026.6.0", "2025.12.0") void status_set_error(const char *message)
 
void status_set_error (const LogString *message)
 
void status_clear_warning ()
 
void status_clear_error ()
 
void status_momentary_warning (const char *name, uint32_t length=5000)
 Set warning status flag and automatically clear it after a timeout.
 
void status_momentary_error (const char *name, uint32_t length=5000)
 Set error status flag and automatically clear it after a timeout.
 
bool has_overridden_loop () const
 
void set_component_source (const LogString *source)
 Set where this component was loaded from for some debug messages.
 
const LogString * get_component_log_str () const
 Get the integration where this component was declared as a LogString for logging.
 
bool should_warn_of_blocking (uint32_t blocking_time)
 
- Public Member Functions inherited from esphome::runtime_image::RuntimeImage
 RuntimeImage (ImageFormat format, image::ImageType type, image::Transparency transparency, image::Image *placeholder=nullptr, bool is_big_endian=false, int fixed_width=0, int fixed_height=0)
 Construct a new RuntimeImage object.
 
 ~RuntimeImage ()
 
int resize (int width, int height)
 Resize the image buffer to the requested dimensions.
 
void draw_pixel (int x, int y, const Color &color)
 
void map_chroma_key (Color &color)
 
int get_buffer_width () const
 
int get_buffer_height () const
 
void draw (int x, int y, display::Display *display, Color color_on, Color color_off) override
 
bool begin_decode (size_t expected_size=0)
 Begin decoding an image.
 
int feed_data (uint8_t *data, size_t len)
 Feed data to the decoder.
 
bool end_decode ()
 Complete the decoding process.
 
bool is_decoding () const
 Check if decoding is currently in progress.
 
bool is_decode_finished () const
 Check if the decoder has finished processing all data.
 
bool is_loaded () const
 Check if an image is currently loaded.
 
ImageFormat get_format () const
 Get the image format.
 
void release ()
 Release the image buffer and free memory.
 
void set_progressive_display (bool progressive)
 Set whether to allow progressive display during decode.
 
- Public Member Functions inherited from esphome::image::Image
 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.
 
bool has_transparency () const
 
lv_img_dsc_t * get_lv_img_dsc ()
 
- Public Member Functions inherited from esphome::display::BaseImage
- Public Member Functions inherited from esphome::Parented< esphome::http_request::HttpRequestComponent >
 Parented ()
 
 Parented (esphome::http_request::HttpRequestComponent *parent)
 
esphome::http_request::HttpRequestComponentget_parent () const
 Get the parent of this object.
 
void set_parent (esphome::http_request::HttpRequestComponent *parent)
 Set the parent of this object.
 

Protected Member Functions

bool validate_url_ (const std::string &url)
 
void end_connection_ ()
 
- Protected Member Functions inherited from esphome::Component
void call_loop_ ()
 
void call_dump_config_ ()
 
void set_component_state_ (uint8_t state)
 Helper to set component state (clears state bits and sets new state)
 
bool set_status_flag_ (uint8_t flag)
 Helper to set a status LED flag on both this component and the app.
 
void set_interval (uint32_t id, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a numeric ID (zero heap allocation).
 
void set_interval (InternalSchedulerID id, uint32_t interval, std::function< void()> &&f)
 
void set_interval (uint32_t interval, std::function< void()> &&f)
 
bool cancel_interval (uint32_t id)
 
bool cancel_interval (InternalSchedulerID id)
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const char *name
 
 ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t id
 
 ESPDEPRECATED ("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(uint32_t initial_wait_time
 
ESPDEPRECATED("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const std ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(const char *name)
 
 ESPDEPRECATED ("cancel_retry is deprecated and will be removed in 2026.8.0.", "2026.2.0") bool cancel_retry(uint32_t id)
 
void set_timeout (uint32_t id, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a numeric ID (zero heap allocation).
 
void set_timeout (InternalSchedulerID id, uint32_t timeout, std::function< void()> &&f)
 
void set_timeout (uint32_t timeout, std::function< void()> &&f)
 
bool cancel_timeout (uint32_t id)
 
bool cancel_timeout (InternalSchedulerID id)
 
void defer (std::function< void()> &&f)
 Defer a callback to the next loop() call.
 
void defer (uint32_t id, std::function< void()> &&f)
 Defer a callback with a numeric ID (zero heap allocation)
 
bool cancel_defer (uint32_t id)
 
- Protected Member Functions inherited from esphome::runtime_image::RuntimeImage
size_t resize_buffer_ (int width, int height)
 Resize the image buffer to the requested dimensions.
 
void release_buffer_ ()
 Release only the image buffer without resetting the decoder.
 
size_t get_buffer_size_ (int width, int height) const
 Get the buffer size in bytes for given dimensions.
 
int get_position_ (int x, int y) const
 Get the position in the buffer for a pixel.
 
std::unique_ptr< ImageDecodercreate_decoder_ ()
 Create decoder instance for the image's format.
 
- Protected Member Functions inherited from esphome::image::Image
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

CallbackManager< void(bool)> download_finished_callback_ {}
 
CallbackManager< void()> download_error_callback_ {}
 
std::shared_ptr< http_request::HttpContainerdownloader_ {nullptr}
 
DownloadBuffer download_buffer_
 
size_t download_buffer_initial_size_
 This is the initial size of the download buffer, not the current size.
 
std::string url_ {""}
 
std::vector< std::pair< std::string, TemplatableValue< std::string > > > request_headers_
 
std::string etag_ = ""
 The value of the ETag HTTP header provided in the last response.
 
std::string last_modified_ = ""
 The value of the Last-Modified HTTP header provided in the last response.
 
time_t start_time_
 
- Protected Attributes inherited from esphome::PollingComponent
uint32_t update_interval_
 
- Protected Attributes inherited from esphome::Component
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_interval(const std voi set_interval )(const char *name, uint32_t interval, std::function< void()> &&f)
 Set an interval function with a unique name.
 
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_interval(const std boo cancel_interval )(const char *name)
 Cancel an interval function.
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t initial_wait_time
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t max_attempts
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> && f
 
ESPDEPRECATED("set_retry is deprecated and will be removed in 2026.8.0. Use set_timeout or set_interval instead.", "2026.2.0") void set_retry(const std uint32_t uint8_t std::function< RetryResult(uint8_t)> float backoff_increase_factor = 1.0f)
 
uint32_t initial_wait_time
 
uint32_t uint8_t max_attempts
 
uint32_t uint8_t std::function< RetryResult(uint8_t)> && f
 
uint32_t uint8_t std::function< RetryResult(uint8_t)> float backoff_increase_factor = 1.0f)
 
uint8_t max_attempts
 
uint8_t std::function< RetryResult(uint8_t)> && f
 
uint8_t std::function< RetryResult(uint8_t)> float backoff_increase_factor = 1.0f)
 
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") void set_timeout(const std voi set_timeout )(const char *name, uint32_t timeout, std::function< void()> &&f)
 Set a timeout function with a unique name.
 
ESPDEPRECATED("Use const char* or uint32_t overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_timeout(const std boo cancel_timeout )(const char *name)
 Cancel a timeout function.
 
ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") void defer(const std voi defer )(const char *name, std::function< void()> &&f)
 Defer a callback to the next loop() call.
 
ESPDEPRECATED("Use const char* overload instead. Removed in 2026.7.0", "2026.1.0") bool cancel_defer(const std boo cancel_defer )(const char *name)
 Cancel a defer callback using the specified name, name must not be empty.
 
const LogString * component_source_ {nullptr}
 
uint16_t warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_MS}
 Warn if blocked for this many ms (max 65.5s)
 
uint8_t component_state_ {0x00}
 State of this component - each bit has a purpose: Bits 0-2: Component state (0x00=CONSTRUCTION, 0x01=SETUP, 0x02=LOOP, 0x03=FAILED, 0x04=LOOP_DONE) Bit 3: STATUS_LED_WARNING Bit 4: STATUS_LED_ERROR Bit 5: Has overridden loop() (set at registration time) Bits 6-7: Unused - reserved for future expansion.
 
volatile bool pending_enable_loop_ {false}
 ISR-safe flag for enable_loop_soon_any_context.
 
- Protected Attributes inherited from esphome::runtime_image::RuntimeImage
uint8_t * buffer_ {nullptr}
 
std::unique_ptr< ImageDecoderdecoder_ {nullptr}
 
const ImageFormat format_
 The image format this RuntimeImage is configured to decode.
 
int buffer_width_ {0}
 Actual width of the current image.
 
int buffer_height_ {0}
 Actual height of the current image.
 
size_t total_size_ {0}
 
size_t decoded_bytes_ {0}
 
const int fixed_width_ {0}
 Fixed width requested on configuration, or 0 if not specified.
 
const int fixed_height_ {0}
 Fixed height requested on configuration, or 0 if not specified.
 
image::Imageplaceholder_ {nullptr}
 Placeholder image to show when the runtime image is not available.
 
bool progressive_display_ {false}
 
bool is_big_endian_ {false}
 Whether the image is stored in big-endian format.
 
- Protected Attributes inherited from esphome::image::Image
int width_
 
int height_
 
ImageType type_
 
const uint8_t * data_start_
 
Transparency transparency_
 
size_t bpp_ {}
 
size_t stride_ {}
 
lv_img_dsc_t dsc_ {}
 
- Protected Attributes inherited from esphome::Parented< esphome::http_request::HttpRequestComponent >
esphome::http_request::HttpRequestComponentparent_
 

Detailed Description

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 24 of file online_image.h.

Constructor & Destructor Documentation

◆ OnlineImage()

esphome::online_image::OnlineImage::OnlineImage ( const std::string & url,
int width,
int height,
runtime_image::ImageFormat format,
image::ImageType type,
image::Transparency transparency,
image::Image * placeholder,
uint32_t buffer_size,
bool is_big_endian = false )

Construct a new OnlineImage object.

Parameters
urlURL to download the image from.
widthDesired width of the target image area.
heightDesired height of the target image area.
formatFormat that the image is encoded in (
See also
runtime_image::ImageFormat).
Parameters
typeThe pixel format for the image.
transparencyThe transparency type for the image.
placeholderOptional placeholder image to show while loading.
buffer_sizeSize of the buffer used to download the image.
is_big_endianWhether the image is stored in big-endian format.

Definition at line 13 of file online_image.cpp.

Member Function Documentation

◆ add_on_error_callback()

void esphome::online_image::OnlineImage::add_on_error_callback ( std::function< void()> && callback)

Definition at line 235 of file online_image.cpp.

◆ add_on_finished_callback()

void esphome::online_image::OnlineImage::add_on_finished_callback ( std::function< void(bool)> && callback)

Definition at line 231 of file online_image.cpp.

◆ add_request_header()

template<typename V >
void esphome::online_image::OnlineImage::add_request_header ( const std::string & header,
V value )
inline

Add the request header.

Definition at line 58 of file online_image.h.

◆ end_connection_()

void esphome::online_image::OnlineImage::end_connection_ ( )
protected

Definition at line 217 of file online_image.cpp.

◆ loop()

void esphome::online_image::OnlineImage::loop ( )
overridevirtual

Reimplemented from esphome::Component.

Definition at line 136 of file online_image.cpp.

◆ release()

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 239 of file online_image.cpp.

◆ set_url()

void esphome::online_image::OnlineImage::set_url ( const std::string & url)
inline

Set the URL to download the image from.

Definition at line 49 of file online_image.h.

◆ update()

void esphome::online_image::OnlineImage::update ( )
overridevirtual

Implements esphome::PollingComponent.

Definition at line 38 of file online_image.cpp.

◆ validate_url_()

bool esphome::online_image::OnlineImage::validate_url_ ( const std::string & url)
protected

Definition at line 22 of file online_image.cpp.

Field Documentation

◆ download_buffer_

DownloadBuffer esphome::online_image::OnlineImage::download_buffer_
protected

Definition at line 79 of file online_image.h.

◆ download_buffer_initial_size_

size_t esphome::online_image::OnlineImage::download_buffer_initial_size_
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 85 of file online_image.h.

◆ download_error_callback_

CallbackManager<void()> esphome::online_image::OnlineImage::download_error_callback_ {}
protected

Definition at line 76 of file online_image.h.

◆ download_finished_callback_

CallbackManager<void(bool)> esphome::online_image::OnlineImage::download_finished_callback_ {}
protected

Definition at line 75 of file online_image.h.

◆ downloader_

std::shared_ptr<http_request::HttpContainer> esphome::online_image::OnlineImage::downloader_ {nullptr}
protected

Definition at line 78 of file online_image.h.

◆ etag_

std::string esphome::online_image::OnlineImage::etag_ = ""
protected

The value of the ETag HTTP header provided in the last response.

Definition at line 94 of file online_image.h.

◆ last_modified_

std::string esphome::online_image::OnlineImage::last_modified_ = ""
protected

The value of the Last-Modified HTTP header provided in the last response.

Definition at line 98 of file online_image.h.

◆ request_headers_

std::vector<std::pair<std::string, TemplatableValue<std::string> > > esphome::online_image::OnlineImage::request_headers_
protected

Definition at line 89 of file online_image.h.

◆ start_time_

time_t esphome::online_image::OnlineImage::start_time_
protected

Definition at line 100 of file online_image.h.

◆ url_

std::string esphome::online_image::OnlineImage::url_ {""}
protected

Definition at line 87 of file online_image.h.


The documentation for this class was generated from the following files: