How to use image.draw_image on RGB888 and ARGB8888 images?

Viewed 15

重现步骤

I tried using draw_image from a ARGB8888 image to draw onto a ARGB8888 image, does not work

期待结果和实际结果

expected draw_image to work with RGB888 and ARGB8888 images, it did not

软硬件版本信息

CanMV-K230-V1.1 flashed with commit 6e5135d prerelease https://github.com/kendryte/canmv_k230/releases/tag/PreRelease , using the V1P0_P1 img
I have also tried flashing with v1.3 micropython release, also same problem
board is from youyeetwo.com

错误日志

no errors

尝试解决过程

using RGB565 as the image format works, but why not RGB888 and ARGB8888?

补充材料

from media.display import *
import time,os
try:
    DISPLAY_WIDTH = 64
    DISPLAY_HEIGHT = 64
    width = DISPLAY_WIDTH
    height = DISPLAY_HEIGHT
    img = image.Image(width,height,image.RGB565)
#    img = image.Image(width,height,image.RGB888)
#    img = image.Image(width,height,image.ARGB8888)
    img.clear()
    img.draw_line(-10, -10, 10, 10, color=(255,255,255), thickness=10)
    img.draw_image(img, 32, 32, x_scale=1, y_scale=1)
    if img.format()==image.RGB888:
        print("RGB888")
    elif img.format()==image.ARGB8888:
        print("ARGB8888")
    elif img.format()==image.RGB565:
        print("RGB565")
    else:
        print(f"unknown {img.format()}")

    Display.init(Display.VIRT, width=DISPLAY_WIDTH, height=DISPLAY_HEIGHT, fps=60)
    MediaManager.init()
    Display.show_image(img)
    time.sleep_ms(100)
finally:
    Display.deinit()
    os.exitpoint(os.EXITPOINT_ENABLE_SLEEP)
    time.sleep_ms(100)
    MediaManager.deinit()

my test code

1 Answers

The image class is inherit from openmv, the most apis just support rgb565 format, not rgb888 and argb8888.

I see, this wasn't mentioned in the documentation so I was a little confused