本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
智能媒体管理(IMM)图片盲水印技术,您可以在不影响原图视觉效果的前提下,向图片中嵌入不可见的文字信息。使用解析盲水印功能,可以恢复出图片中的水印信息。您可以按照以下步骤将图片盲水印从旧版(API版本为2017-09-06)迁移至新版(API版本为2020-09-30)。
背景信息
图片盲水印后续新增功能及优化将主要集中于新版,旧版将逐步下线。新版本相较于旧版在速度和抗攻击能力方面显著优于旧版,并且具备向前兼容的特性,能够解密旧版加密过的图片,以及更广泛的地域支持,为了确保您获得更优质的使用体验,建议您尽快迁移至新版。
新版优势
抗攻击性:新版盲水印在抗攻击能力方面显著优于旧版。当添加盲水印的图像经过一定程度的攻击,例如压缩、缩放、裁剪、旋转及色彩变换等,依然能够成功提取出水印内容。
兼容性:新版能够解密经过旧版加密处理的图片盲水印。
新版与旧版API对应关系说明
SDK/API版本
旧版使用旧版SDK,API版本为2017-09-06。
新版使用新版SDK,API版本为2020-09-30。
文档在线预览和协作编辑关于新版与旧版API的对应关系,请参见下表。
功能 | 新版API | 旧版API | 说明 |
功能 | 新版API | 旧版API | 说明 |
图片盲水印 | EncodeBlindWatermark - 添加图片盲水印 CreateDecodeBlindWatermarkTask - 创建解析盲水印任务 GetDecodeBlindWatermarkResult - 获取解析盲水印任务结果 API版本为2020-09-30 | EncodeBlindWatermark - 添加图片盲水印 DecodeBlindWatermark - 解析图片盲水印 API版本为2017-09-06 | 新版在速度和在抗攻击能力方面显著优于旧版,并且具备向前兼容的特性,能够解密旧版加密过的图片。 |
如何迁移
您可以按照以下步骤进行迁移:
创建新版项目。
调试新版同功能对应接口,并将您的业务切换至新版接口。
删除旧版本项目。
步骤一 :创建新版项目
创建新版项目之前确认是否已创建过新版项目,参考检查项目新旧版本,新版项目存在则无需创建。
控制台创建新版项目
登录智能媒体管理控制台。
左下角提供了新旧版本的切换功能,用户可在旧版中点击以体验新版。
在项目列表页面,请在页面左上角选择与旧版项目相同的地域,具体如下图所示。
在项目列表页面,单击创建项目,弹出创建项目面板,填写项目信息确认完成创建,如下图所示。
创建项目时,需选择与旧版项目相同的服务角色,并将工作流模板设置为Official:ImageManagement,其余选项无需进行配置。
步骤二:迁移添加图片盲水印接口
添加图片盲水迁移到新版
调用新版接口EncodeBlindWatermark - 添加图片盲水印。具体操作请参见以下步骤:
EncodeBlindWatermark图片添加盲水印接口的项目名参数应使用新版本创建的项目名称。
SDK/API版本
新版使用新版SDK,API版本为2020-09-30。
旧版使用旧版SDK,API版本为2017-09-06。
SDK 安装命令
pip install alibabacloud_imm20200930==4.6.1
示例代码:
# -*- coding: utf-8 -*- # This file is auto-generated, don't edit it. Thanks. import os import sys from typing import List from alibabacloud_imm20200930.client import Client as imm20200930Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_imm20200930 import models as imm_20200930_models from alibabacloud_tea_util import models as util_models from alibabacloud_tea_util.client import Client as UtilClient class Sample: def __init__(self): pass @staticmethod def create_client() -> imm20200930Client: """ 使用AK&SK初始化账号Client @return: Client @throws Exception """ # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 # 建议使用更安全的 STS 方式。 config = open_api_models.Config( # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。, access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。, access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ) # Endpoint 请参考 https://api.aliyun.com/product/imm config.endpoint = f'imm.cn-hangzhou.aliyuncs.com' return imm20200930Client(config) @staticmethod def main( args: List[str], ) -> None: client = Sample.create_client() encode_blind_watermark_request = imm_20200930_models.EncodeBlindWatermarkRequest( project_name='TestProject', source_uri='oss://test/watermark.jpg', target_uri='oss://test/target/watermark.jpg', content='test' ) runtime = util_models.RuntimeOptions() try: # 复制代码运行请自行打印 API 的返回值 client.encode_blind_watermark_with_options(encode_blind_watermark_request, runtime) except Exception as error: # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 # 错误 message print(error.message) # 诊断地址 print(error.data.get("Recommend")) UtilClient.assert_as_string(error.message) @staticmethod async def main_async( args: List[str], ) -> None: client = Sample.create_client() encode_blind_watermark_request = imm_20200930_models.EncodeBlindWatermarkRequest( project_name='TestProject', source_uri='oss://test/watermark.jpg', target_uri='oss://test/target/watermark.jpg', content='test' ) runtime = util_models.RuntimeOptions() try: # 复制代码运行请自行打印 API 的返回值 await client.encode_blind_watermark_with_options_async(encode_blind_watermark_request, runtime) except Exception as error: # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 # 错误 message print(error.message) # 诊断地址 print(error.data.get("Recommend")) UtilClient.assert_as_string(error.message) if __name__ == '__main__': Sample.main(sys.argv[1:])
步骤三:迁移解析图片盲水印接口
创建解析图片盲水印任务
调用新版接口CreateDecodeBlindWatermarkTask - 创建解析盲水印任务。具体操作请参见以下步骤:
CreateDecodeBlindWatermarkTask图片添加盲水印接口的项目名参数应使用新版本创建的项目名称。
SDK/API版本
新版使用新版SDK,API版本为2020-09-30。
旧版使用旧版SDK,API版本为2017-09-06。
SDK 安装命令
pip install alibabacloud_imm20200930==4.6.1
示例代码:
# -*- coding: utf-8 -*- # This file is auto-generated, don't edit it. Thanks. import os import sys from typing import List from alibabacloud_imm20200930.client import Client as imm20200930Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_imm20200930 import models as imm_20200930_models from alibabacloud_tea_util import models as util_models from alibabacloud_tea_util.client import Client as UtilClient class Sample: def __init__(self): pass @staticmethod def create_client() -> imm20200930Client: """ 使用AK&SK初始化账号Client @return: Client @throws Exception """ # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。 config = open_api_models.Config( # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。, access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。, access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ) # Endpoint 请参考 https://api.aliyun.com/product/imm config.endpoint = f'imm.cn-hangzhou.aliyuncs.com' return imm20200930Client(config) @staticmethod def main( args: List[str], ) -> None: client = Sample.create_client() create_decode_blind_watermark_task_request = imm_20200930_models.CreateDecodeBlindWatermarkTaskRequest( project_name='TestProject', source_uri='oss://test/target/watermark.jpg' ) runtime = util_models.RuntimeOptions() try: # 复制代码运行请自行打印 API 的返回值 client.create_decode_blind_watermark_task_with_options(create_decode_blind_watermark_task_request, runtime) except Exception as error: # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 # 错误 message print(error.message) # 诊断地址 print(error.data.get("Recommend")) UtilClient.assert_as_string(error.message) @staticmethod async def main_async( args: List[str], ) -> None: client = Sample.create_client() create_decode_blind_watermark_task_request = imm_20200930_models.CreateDecodeBlindWatermarkTaskRequest( project_name='TestProject', source_uri='oss://test/target/watermark.jpg' ) runtime = util_models.RuntimeOptions() try: # 复制代码运行请自行打印 API 的返回值 await client.create_decode_blind_watermark_task_with_options_async(create_decode_blind_watermark_task_request, runtime) except Exception as error: # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 # 错误 message print(error.message) # 诊断地址 print(error.data.get("Recommend")) UtilClient.assert_as_string(error.message) if __name__ == '__main__': Sample.main(sys.argv[1:])
获取解析图片盲水印任务结果
调用新版接口GetDecodeBlindWatermarkResult - 获取解析盲水印任务结果。具体操作请参见以下步骤:
GetDecodeBlindWatermarkResult图片添加盲水印接口的项目名参数应使用新版本创建的项目名称。
SDK/API版本
新版使用新版SDK,API版本为2020-09-30。
示例代码:
# -*- coding: utf-8 -*- # This file is auto-generated, don't edit it. Thanks. import os import sys from typing import List from alibabacloud_imm20200930.client import Client as imm20200930Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_imm20200930 import models as imm_20200930_models from alibabacloud_tea_util import models as util_models from alibabacloud_tea_util.client import Client as UtilClient class Sample: def __init__(self): pass @staticmethod def create_client() -> imm20200930Client: """ 使用AK&SK初始化账号Client @return: Client @throws Exception """ # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。 config = open_api_models.Config( # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。, access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'], # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。, access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET'] ) # Endpoint 请参考 https://api.aliyun.com/product/imm config.endpoint = f'imm.cn-hangzhou.aliyuncs.com' return imm20200930Client(config) @staticmethod def main( args: List[str], ) -> None: client = Sample.create_client() get_decode_blind_watermark_result_request = imm_20200930_models.GetDecodeBlindWatermarkResultRequest( project_name='TestProject', task_type='DecodeBlindWatermark', task_id='DecodeBlindWatermark-78ac8f3b-59e0-45a6-9b67-32168c3*****' ) runtime = util_models.RuntimeOptions() try: # 复制代码运行请自行打印 API 的返回值 client.get_decode_blind_watermark_result_with_options(get_decode_blind_watermark_result_request, runtime) except Exception as error: # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 # 错误 message print(error.message) # 诊断地址 print(error.data.get("Recommend")) UtilClient.assert_as_string(error.message) @staticmethod async def main_async( args: List[str], ) -> None: client = Sample.create_client() get_decode_blind_watermark_result_request = imm_20200930_models.GetDecodeBlindWatermarkResultRequest( project_name='TestProject', task_type='DecodeBlindWatermark', task_id='DecodeBlindWatermark-78ac8f3b-59e0-45a6-9b67-32168c3*****' ) runtime = util_models.RuntimeOptions() try: # 复制代码运行请自行打印 API 的返回值 await client.get_decode_blind_watermark_result_with_options_async(get_decode_blind_watermark_result_request, runtime) except Exception as error: # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 # 错误 message print(error.message) # 诊断地址 print(error.data.get("Recommend")) UtilClient.assert_as_string(error.message) if __name__ == '__main__': Sample.main(sys.argv[1:])
步骤四:删除旧版项目
删除旧版项目之前,请确保业务已完全迁移到新版,旧版没有流量之后再进行删除,此操作不可恢复。
登录智能媒体管理控制台。
左下角可切换新旧版本,点击可返回旧版。
在项目列表页面中,选择旧版项目所处的地域,如下图所示。
在项目列表页面中,选择需删除的旧版项目,然后点击删除按钮,如下图所示。
点击确定完成删除操作。
新旧版本图片盲水印计费
新旧版本的计费项和计费模式一致。
图片盲水印计费项
版本 | API | 计费 | 计费说明 |
版本 | API | 计费 | 计费说明 |
旧版图片盲水印 | EncodeBlindWatermark - 添加图片盲水印 DecodeBlindWatermark - 解析图片盲水印 API版本为2017-09-06 | 新旧版本的计费项和计费模式保持一致,新版获取解析盲水印任务的接口不产生费用。 | |
新版图片盲水印 | EncodeBlindWatermark - 添加图片盲水印 CreateDecodeBlindWatermarkTask - 创建解析盲水印任务 GetDecodeBlindWatermarkResult - 获取解析盲水印任务结果 API版本为2020-09-30 |
- 本页导读 (1)
- 背景信息
- 新版优势
- 新版与旧版API对应关系说明
- 如何迁移
- 步骤一 :创建新版项目
- 步骤二:迁移添加图片盲水印接口
- 步骤三:迁移解析图片盲水印接口
- 步骤四:删除旧版项目
- 新旧版本图片盲水印计费
- 图片盲水印计费项