我使用抠像的API想批量抠本地文件夹内的图片,但一直失败,批量处理本地文件夹内的图片,批量抠像,谁有现成的代码吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
以下是使用阿里云视觉智能平台的抠像 API 批量处理本地文件夹内的图片的 Python 代码示例:
import os
import requests
import base64
# 阿里云抠像API接口地址
url = 'https://dtplus-cn-shanghai.data.aliyuncs.com/image/segment/batch'
# 阿里云抠像API接口所需的API KEY和API SECRET
api_key = '您的API KEY'
api_secret = '您的API SECRET'
# 需要处理的本地文件夹路径
source_folder = '本地文件夹路径'
# 处理结果保存的本地文件夹路径
result_folder = '本地文件夹路径'
# 批量处理本地文件夹内的图片
for file_name in os.listdir(source_folder):
# 读取图片文件
file_path = os.path.join(source_folder, file_name)
with open(file_path, 'rb') as f:
image_data = f.read()
# 对图片进行 base64 编码
image_base64 = base64.b64encode(image_data).decode('utf-8')
# 构造请求参数
data = {
'image': image_base64,
'type': 'foreground',
'refine': '1',
'api_key': api_key,
'api_secret': api_secret
}
# 发送请求
response = requests.post(url, data=data)
# 解析返回结果
result = response.json()
# 保存处理结果
result_file_path = os.path.join(result_folder, file_name)
with open(result_file_path, 'wb') as f:
f.write(base64.b64decode(result['data']['image']))
该代码示例中使用的是 Python requests 库发送 HTTP 请求,并使用 base64 编码和解码图片数据。在使用该代码示例时,需要将其中的 API KEY、API SECRET、本地文件夹路径等参数替换为自己的实际值,以确保代码能够正确执行。
以下是一个Python脚本示例,它可以扫描指定的本地文件夹内的所有图片,并使用阿里云的抠图API对它们进行批量抠像:
python import os import requests import base64
url = "https://dtplus-cn-shanghai.data.aliyuncs.com/image/removebg" appcode = "你的AppCode"
image_folder = "/path/to/your/image/folder" for image_file in os.listdir(image_folder): if image_file.endswith(".jpg") or image_file.endswith(".jpeg") or image_file.endswith(".png"): # 读取图片文件并编码为Base64格式 with open(os.path.join(image_folder, image_file), "rb") as f: image_base64 = base64.b64encode(f.read()).decode('utf-8')
# 发送API请求并保存结果到本地文件
headers = {
"Authorization": "APPCODE " + appcode,
"Content-Type": "application/json; charset=UTF-8"
}
data = {
"image": image_base64
}
response = requests.post(url, json=data, headers=headers)
with open(os.path.join(image_folder, image_file.replace(".", "_removebg.")), "wb") as f:
f.write(base64.b64decode(response.json()["data"]["image"]))
在代码中,请将url和appcode替换为您自己的API地址和AppCode。此外,还需要将image_folder替换为您要处理的文件夹的实际路径。
请注意,使用API时需要支付相应的费用,请确保您的阿里云账户已经充值并且具有足够的余额,以避免因余额不足而导致API请求失败。
是需要调用本地的图片处理代码。目前新版SDK已经支持文件在本地或者非上海地域OSS文件,与文件在同地域的区别在于,需要使用xxxAdvanceRequest将文件以stream形式通过ImageURLObject参数传入进行后续调用 https://help.aliyun.com/document_detail/155645.html