MaixPy icon indicating copy to clipboard operation
MaixPy copied to clipboard

灰度模式的image宽度为128时,如果高度为32~52,显示异常

Open mcpanl opened this issue 10 months ago • 1 comments

由于我打算借助maixpy的image对象来创建一个图片,并显示到oled显示屏上,所以尝试了一下创建128*32的图像,发现显示异常,但时比这个高度小或者高度高于54的话,显示正常,只有当宽度为128且高度为32~52时才会显示异常,期望可以修复此问题。

似乎只有灰度Format的image才有此问题?

Image

from maix import image, app, display, time

disp = display.Display()

width, height = 128, 54

img = image.Image(width, height, image.Format.FMT_GRAYSCALE)
img.draw_rect(1, 1, width - 2, height - 2, image.COLOR_WHITE)
img.draw_string(5, 5, 'MaixPy', image.COLOR_WHITE)

while not app.need_exit():
    disp.show(img)
    time.sleep(1)

Image

Image

Image

Image

mcpanl avatar Mar 25 '25 18:03 mcpanl

看起来像是draw_string的bug, 从你的现象来看 draw_rect 看起来正常

Neutree avatar Mar 26 '25 10:03 Neutree

验证了一下这个问题,是因为 image.Image() 默认不会设置背景,所以背景的颜色值是随机的,一般情况下可能是黑色的,不过这跟内存分配策略和初始化值策略有关,可以使用img = image.Image(width, height, image.Format.FMT_GRAYSCALE, bg=image.Color.from_gray(0)) 来手动初始化一遍图片默认颜色确保背景不是随机色彩,注意这样做会增加 Image()初始化时间因为要将所有像素填充一遍。

image.Image() 默认没有将图片内存全部初始化一遍是考虑到在MaixCAM上消耗时间比较多,所以默认不初始化,而是直接用申请的可能存在赃数据的内存,开发者可根据代码实际情况选择是否初始化填充颜色。

Neutree avatar Jul 22 '25 11:07 Neutree