mirror of
https://github.com/esphome/esphome.git
synced 2025-10-29 22:24:26 +00:00
[image][online_image][animation] Fix transparency in RGB565 (#7631)
This commit is contained in:
@@ -271,7 +271,8 @@ async def to_code(config):
|
||||
pos += 1
|
||||
|
||||
elif config[CONF_TYPE] in ["RGB565", "TRANSPARENT_IMAGE"]:
|
||||
data = [0 for _ in range(height * width * 2 * frames)]
|
||||
bytes_per_pixel = 3 if transparent else 2
|
||||
data = [0 for _ in range(height * width * bytes_per_pixel * frames)]
|
||||
pos = 0
|
||||
for frameIndex in range(frames):
|
||||
image.seek(frameIndex)
|
||||
@@ -288,17 +289,13 @@ async def to_code(config):
|
||||
G = g >> 2
|
||||
B = b >> 3
|
||||
rgb = (R << 11) | (G << 5) | B
|
||||
|
||||
if transparent:
|
||||
if rgb == 0x0020:
|
||||
rgb = 0
|
||||
if a < 0x80:
|
||||
rgb = 0x0020
|
||||
|
||||
data[pos] = rgb >> 8
|
||||
pos += 1
|
||||
data[pos] = rgb & 0xFF
|
||||
pos += 1
|
||||
if transparent:
|
||||
data[pos] = a
|
||||
pos += 1
|
||||
|
||||
elif config[CONF_TYPE] in ["BINARY", "TRANSPARENT_BINARY"]:
|
||||
width8 = ((width + 7) // 8) * 8
|
||||
|
||||
@@ -62,7 +62,7 @@ void Animation::set_frame(int frame) {
|
||||
}
|
||||
|
||||
void Animation::update_data_start_() {
|
||||
const uint32_t image_size = image_type_to_width_stride(this->width_, this->type_) * this->height_;
|
||||
const uint32_t image_size = this->get_width_stride() * this->height_;
|
||||
this->data_start_ = this->animation_data_start_ + image_size * this->current_frame_;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user