OpenHarmony开发者论坛

标题: OpenHarmony3.2.3动态logo适配 [打印本页]

作者: sonia    时间: 2023-10-25 17:46
标题: OpenHarmony3.2.3动态logo适配
[md]从原生3.2.3/system/etc/init/bootpic.zip发现图片分辨率为800x800;
自制作的bootpic.zip分辨率为720x1440,开机后,自制的图片被压缩。如何更换开机动画,并使不同分辨率的开机动画开机时不被压缩

[/md]
作者: 深开鸿_陈迅    时间: 2023-10-31 18:06
[md]一种方法是把图片制作成视频

```
import cv2
import os

frame_rate = 30
width, height = 640, 480
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
video = cv2.VideoWriter('output.mp4', fourcc, frame_rate, (width, height))

image_dir = 'path/to/images'
image_files = os.listdir(image_dir)

for image_file in image_files:
    if image_file.endswith('.jpg'):
        image_path = os.path.join(image_dir, image_file)
        image = cv2.imread(image_path)
        video.write(image)

video.release()
```

另一种方法是把图片转换成宽高相同

```
import os
import cv2

def resize_images(directory):
    image_files = [file for file in os.listdir(directory) if file.endswith(('.jpg', '.jpeg', '.png'))]

    for image_file in image_files:
        image_path = os.path.join(directory, image_file)
        image = cv2.imread(image_path)

        height, width = image.shape[:2]# 获取图片的宽度和高度

        max_dim = max(height, width)# 计算最大的边长

        new_image = np.zeros((max_dim, max_dim, 3), dtype=np.uint8)
        new_image[:, :] = (0, 0, 0)  # 黑色填充

        # 计算将图片居中放置时的起始坐标
        x_offset = (max_dim - width) // 2
        y_offset = (max_dim - height) // 2

        # 将原始图片复制到新的画布上
        new_image[y_offset:y_offset+height, x_offset:x_offset+width] = image

        # 保存新的图片
        new_image_path = os.path.join(directory, f'resized_{image_file}')
        cv2.imwrite(new_image_path, new_image)

        print(f'{image_file} 已成功转换并保存为 {new_image_path}')

resize_images('目录路径')
```

运行脚本前先安装一下库
`pip install opencv-python`

[/md]
作者: 深开鸿_王石    时间: 2023-11-1 09:18
[md]在**BootAnimation**::**OnDraw**时候,逻辑就是从动画文件读取,canvas根据window的长宽创建,但是当图片尺寸超过窗口尺寸就会自动压缩,不希望转换尺寸的话,就要修改这个函数,可以自己clip,或者选择平铺

[/md]




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5