在使用 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 来实现上传,使用压缩后的图片,同样是不会报错的。
