【小技巧】使用影刀RPA压缩得到满足AIPower要求的图片尺寸
评论
收藏

【小技巧】使用影刀RPA压缩得到满足AIPower要求的图片尺寸

经验分享
阿蓝
2024-03-06 20:48·浏览量:928
阿蓝
发布于 2024-03-06 20:48928浏览

问题场景

在使用 AI Power 的时候,如果使用上传图片功能,可能与遇到图片分辨率过大的情况,则会收到报错如下:


如果要避免这个报错,那就需要手动裁剪或者借用其他压缩工具等方法,将图片裁剪或压缩到满足图片上传质量要求的程度。如果是手动裁剪的话,可能还会需要多次裁剪。

虽然影刀的市场指令中也有压缩图片相关的指令,但该指令是按百分比来进行压缩的,如果不清楚从原图压缩到目标分辨率需要如何设置这个参数的话,那么也是要多次调整参数才能得到结果。


那怎么批量快速地来实现图片的压缩,并且保持压缩后的图片能最大程度地满足标准呢?

可以使用 RPA 调用 Python 模块的方式来解决。

解决步骤

首先,需要先在客户端中安装 Pillow 库:


新建一个 Python 模块,插入代码段:

from PIL import Image
import os

def compress_image(input_path, output_path):
    # 设置最大图片文件大小为20MB
    max_size = 20 * 1024 * 1024  # 20MB
    # 设置最大图片分辨率为2000x768
    max_width = 2000
    max_height = 768

    # 打开原始图片
    with Image.open(input_path) as img:
        # 调整图片分辨率,确保不超过最大宽高限制
        img.thumbnail((max_width, max_height), Image.LANCZOS)
        
        # 保存图片到指定路径,这里我们先保存到临时文件
        temp_output = output_path + ".temp"
        img_format = 'JPEG'
        img.save(temp_output, img_format, optimize=True)
        
        # 检查图片大小,如果大于max_size,则提示用户
        filesize = os.path.getsize(temp_output)
        if filesize > max_size:
            print(f"Cannot compress the image to be under {max_size} bytes without significant quality loss.")
        else:
            # 如果满足大小要求,将图片从临时文件复制到最终输出文件
            os.replace(temp_output, output_path)

说明:代码中的变量 img_format 我这里是写成了JPEG的格式,因为我处理的是 .jpg 的图片,如果处理 .png 图片的话,需要写成 PNG。


之后就可以在流程文件中调用这个模块了。

完了查看一下压缩完后的图片信息,可以看到分辨率已经满足最低的 2000x768 的要求了。


完成压缩处理后的图片,在 AI Power 中验证过不会再报错。


也可以在 RPA 中直接调用 AI Power 来实现上传,使用压缩后的图片,同样是不会报错的。


收藏2
全部评论1
最新
发布评论
评论