ESPHome  2025.2.0
Public Member Functions | Protected Member Functions | Protected Attributes | Friends
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::image::Image esphome::Parented< esphome::http_request::HttpRequestComponent > esphome::Component esphome::display::BaseImage

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)
 
- Public Member Functions inherited from esphome::PollingComponent
 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 ()
 
- Public Member Functions inherited from esphome::Component
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...
 
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...
 
- 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. More...
 
bool has_transparency () const
 
lv_img_dsc_t * get_lv_img_dsc ()
 
- 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. 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_ ()
 
- Protected Member Functions inherited from esphome::Component
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...
 
- 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

RAMAllocator< uint8_t > allocator_ {}
 
CallbackManager< void()> download_finished_callback_ {}
 
CallbackManager< void()> download_error_callback_ {}
 
std::shared_ptr< http_request::HttpContainerdownloader_ {nullptr}
 
std::unique_ptr< ImageDecoderdecoder_ {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::Imageplaceholder_ {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_
 
- Protected Attributes inherited from esphome::PollingComponent
uint32_t update_interval_
 
- Protected Attributes inherited from esphome::Component
uint32_t component_state_ {0x0000}
 State of this component. More...
 
float setup_priority_override_ {NAN}
 
const char * component_source_ {nullptr}
 
- 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_
 

Friends

bool ImageDecoder::set_size (int width, int height)
 
void ImageDecoder::draw (int x, int y, int w, int h, const Color &color)
 

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

Constructor & Destructor Documentation

◆ OnlineImage()

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.

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
ImageFormat).
Parameters
buffer_sizeSize of the buffer used to download the image.

Definition at line 33 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 332 of file online_image.cpp.

◆ add_on_finished_callback()

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

Definition at line 328 of file online_image.cpp.

◆ draw()

void esphome::online_image::OnlineImage::draw ( int  x,
int  y,
display::Display display,
Color  color_on,
Color  color_off 
)
overridevirtual

Reimplemented from esphome::image::Image.

Definition at line 45 of file online_image.cpp.

◆ draw_pixel_()

void esphome::online_image::OnlineImage::draw_pixel_ ( int  x,
int  y,
Color  color 
)
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.

Parameters
xHorizontal pixel position.
yVertical pixel position.
color32 bit color to put into the pixel.

Definition at line 246 of file online_image.cpp.

◆ end_connection_()

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

Definition at line 311 of file online_image.cpp.

◆ get_buffer_size_() [1/2]

uint32_t esphome::online_image::OnlineImage::get_buffer_size_ ( ) const
inlineprotected

Definition at line 97 of file online_image.h.

◆ get_buffer_size_() [2/2]

int esphome::online_image::OnlineImage::get_buffer_size_ ( int  width,
int  height 
) const
inlineprotected

Definition at line 98 of file online_image.h.

◆ get_position_()

int esphome::online_image::OnlineImage::get_position_ ( int  x,
int  y 
) const
inlineprotected

Definition at line 100 of file online_image.h.

◆ is_auto_resize_()

ESPHOME_ALWAYS_INLINE bool esphome::online_image::OnlineImage::is_auto_resize_ ( ) const
inlineprotected

Definition at line 102 of file online_image.h.

◆ loop()

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

Reimplemented from esphome::Component.

Definition at line 192 of file online_image.cpp.

◆ map_chroma_key()

void esphome::online_image::OnlineImage::map_chroma_key ( Color color)

Definition at line 233 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 53 of file online_image.cpp.

◆ resize_()

size_t esphome::online_image::OnlineImage::resize_ ( int  width,
int  height 
)
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

Parameters
width
height
Returns
0 if no memory could be allocated, the size of the new buffer otherwise.

Definition at line 67 of file online_image.cpp.

◆ resize_download_buffer()

size_t esphome::online_image::OnlineImage::resize_download_buffer ( size_t  size)
inline

Resize the download buffer.

Parameters
sizeThe new size for the download buffer.

Definition at line 87 of file online_image.h.

◆ set_placeholder()

void esphome::online_image::OnlineImage::set_placeholder ( image::Image placeholder)
inline

Set the image that needs to be shown as long as the downloaded image is not available.

Parameters
placeholderPointer to the (to show as placeholder.

Definition at line 74 of file online_image.h.

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

◆ update()

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

Implements esphome::PollingComponent.

Definition at line 97 of file online_image.cpp.

◆ validate_url_()

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

Definition at line 320 of file online_image.cpp.

Friends And Related Function Documentation

◆ ImageDecoder::draw

void ImageDecoder::draw ( int  x,
int  y,
int  w,
int  h,
const Color color 
)
friend

◆ ImageDecoder::set_size

bool ImageDecoder::set_size ( int  width,
int  height 
)
friend

Field Documentation

◆ allocator_

RAMAllocator<uint8_t> esphome::online_image::OnlineImage::allocator_ {}
protected

Definition at line 95 of file online_image.h.

◆ buffer_

uint8_t* esphome::online_image::OnlineImage::buffer_
protected

Definition at line 140 of file online_image.h.

◆ buffer_height_

int esphome::online_image::OnlineImage::buffer_height_
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.

◆ buffer_width_

int esphome::online_image::OnlineImage::buffer_width_
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.

◆ decoder_

std::unique_ptr<ImageDecoder> esphome::online_image::OnlineImage::decoder_ {nullptr}
protected

Definition at line 138 of file online_image.h.

◆ download_buffer_

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

Definition at line 141 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 147 of file online_image.h.

◆ download_error_callback_

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

Definition at line 135 of file online_image.h.

◆ download_finished_callback_

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

Definition at line 134 of file online_image.h.

◆ downloader_

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

Definition at line 137 of file online_image.h.

◆ fixed_height_

const int esphome::online_image::OnlineImage::fixed_height_
protected

height requested on configuration, or 0 if non specified.

Definition at line 157 of file online_image.h.

◆ fixed_width_

const int esphome::online_image::OnlineImage::fixed_width_
protected

width requested on configuration, or 0 if non specified.

Definition at line 155 of file online_image.h.

◆ format_

const ImageFormat esphome::online_image::OnlineImage::format_
protected

Definition at line 149 of file online_image.h.

◆ placeholder_

image::Image* esphome::online_image::OnlineImage::placeholder_ {nullptr}
protected

Definition at line 150 of file online_image.h.

◆ start_time_

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

Definition at line 177 of file online_image.h.

◆ url_

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

Definition at line 152 of file online_image.h.


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