• Lv0
    粉丝0

积分11 / 贡献0

提问3答案被采纳0文章0

OpenHarmony3.2.3动态logo适配

sonia 显示全部楼层 发表于 2023-10-25 17:46:25

从原生3.2.3/system/etc/init/bootpic.zip发现图片分辨率为800x800; 自制作的bootpic.zip分辨率为720x1440,开机后,自制的图片被压缩。如何更换开机动画,并使不同分辨率的开机动画开机时不被压缩

您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论2

深开鸿_陈迅

沙发 发表于 2023-10-31 18:06:27

一种方法是把图片制作成视频

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

深开鸿_王石

板凳 发表于 2023-11-1 09:18:33

BootAnimation::OnDraw时候,逻辑就是从动画文件读取,canvas根据window的长宽创建,但是当图片尺寸超过窗口尺寸就会自动压缩,不希望转换尺寸的话,就要修改这个函数,可以自己clip,或者选择平铺

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部