华为云用户手册

  • 什么是MLOps MLOps(Machine Learning Operation)是“机器学习”(Machine Learning)和“DevOps”(Development and Operations)的组合实践。随着机器学习的发展,人们对它的期待不仅仅是学术研究方面的领先突破,更希望这些技术能够系统化地落地到各个场景中。但技术的真实落地和学术研究还是有比较大的差别的。在学术研究中,一个AI算法的开发是面向固定的数据集(公共数据集或者某个特定场景固定数据集),基于单个数据集,不断做算法的迭代与优化,面向场景的AI系统化开发的过程中,除了模型的开发,还有整套系统的开发,于是软件系统开发中成功经验“DevOps”被自然地引入进来。但是,在人工智能时代,传统的DevOps已经不能完全覆盖一个人工智能系统开发的全流程了。 父主题: MLOps简介
  • DevOps DevOps,即Development and Operations,是一组过程、方法与系统的统称,用于促进软件开发、运维和质量保障部门之间的沟通、协作与整合。在大型的软件系统开发中,DevOps被验证是一个非常成功的方法。DevOps不仅可以加快业务与开发之间的互动与迭代,还可以解决开发与运维之间的冲突。开发侧很快,运维侧太稳,这个就是常说的开发与运维之间固有的、根因的冲突。在AI应用落地的过程中,也有类似的冲突。AI应用的开发门槛较高,需要有一定的算法基础,而且算法需要快速高效地迭代。专业的运维人员追求的更多是稳定、安全和可靠;专业知识也和AI算法大相径庭。运维人员需要去理解算法人员的设计与思路才能保障服务,这对于运维人员来说,门槛更高了。在这种情况下,更多时候可能需要一个算法人员去端到端负责,这样一来,人力成本就会过高。这种模式在少量模型应用的场景是可行的,但是当规模化落地AI应用时,人力问题将会成为瓶颈。 父主题: MLOps简介
  • Workflow的构成 工作流是对一个有向无环图的描述。开发者可以通过 Workflow 进行有向无环图(Directed Acyclic Graph,DAG)的开发。一个DAG是由节点和节点之间的关系描述组成的。开发者通过定义节点的执行内容和节点的执行顺序定义DAG。如下图,绿色的矩形表示为一个节点,节点与节点之间的连线则是节点的关系描述。整个DAG的执行其实就是有序的任务执行模板。 图1 工作流 父主题: 什么是Workflow
  • 如何导入对象 在编写Workflow过程中,相关对象都通过workflow包进行导入,梳理如下: from modelarts import workflow as wf Data包相关内容导入: wf.data.DatasetTypeEnumwf.data.Datasetwf.data.DatasetVersionConfigwf.data.DatasetPlaceholderwf.data.ServiceInputPlaceholderwf.data.ServiceDatawf.data.ServiceUpdatePlaceholderwf.data.DataTypeEnumwf.data.ModelDatawf.data.GalleryModelwf.data.OBSPathwf.data.OBSOutputConfigwf.data.OBSPlaceholderwf.data.SWRImagewf.data.SWRImagePlaceholderwf.data.Storagewf.data.InputStoragewf.data.OutputStoragewf.data.LabelTaskwf.data.LabelTaskPlaceholderwf.data.LabelTaskConfigwf.data.LabelTaskTypeEnumwf.data.MetricsConfigwf.data.TripartiteServiceConfigwf.data.DataConsumptionSelector policy包相关内容导入: wf.policy.Policywf.policy.Scene steps包相关内容导入: wf.steps.MetricInfowf.steps.Conditionwf.steps.ConditionTypeEnumwf.steps.ConditionStepwf.steps.LabelingStepwf.steps.LabelingInputwf.steps.LabelingOutputwf.steps.LabelTaskPropertieswf.steps.ImportDataInfowf.steps.DataOriginTypeEnumwf.steps.DatasetImportStepwf.steps.DatasetImportInputwf.steps.DatasetImportOutputwf.steps.AnnotationFormatConfigwf.steps.AnnotationFormatParameterswf.steps.AnnotationFormatEnumwf.steps.Labelwf.steps.ImportTypeEnumwf.steps.LabelFormatwf.steps.LabelTypeEnumwf.steps.ReleaseDatasetStepwf.steps.ReleaseDatasetInputwf.steps.ReleaseDatasetOutputwf.steps.CreateDatasetStepwf.steps.CreateDatasetInputwf.steps.CreateDatasetOutputwf.steps.DatasetPropertieswf.steps.SchemaFieldwf.steps.ImportConfigwf.steps.JobStepwf.steps.JobMetadatawf.steps.JobSpecwf.steps.JobResourcewf.steps.JobTypeEnumwf.steps.JobEnginewf.steps.JobInputwf.steps.JobOutputwf.steps.LogExportPathwf.steps.MrsJobStepwf.steps.MrsJobInputwf.steps.MrsJobOutputwf.steps.MrsJobAlgorithmwf.steps.ModelStepwf.steps.ModelInputwf.steps.ModelOutputwf.steps.ModelConfigwf.steps.Templatewf.steps.TemplateInputswf.steps.ServiceStepwf.steps.ServiceInputwf.steps.ServiceOutputwf.steps.ServiceConfigwf.steps.StepPolicy workflow包相关内容导入: wf.Workflowwf.Subgraphwf.Placeholderwf.PlaceholderTypewf.AlgorithmParameterswf.BaseAlgorithmwf.Algorithmwf.AIGalleryAlgorithmwf.resourcewf.SystemEnvwf.add_whitelist_userswf.delete_whitelist_users 父主题: 常见问题
  • 使用案例 int类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_int", placeholder_type=wf.PlaceholderType.INT, default=1, description="这是一个int类型的参数") str类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_str", placeholder_type=wf.PlaceholderType.STR, default="default_value", description="这是一个str类型的参数") bool类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_bool", placeholder_type=wf.PlaceholderType.BOOL, default=True, description="这是一个bool类型的参数") float类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_float", placeholder_type=wf.PlaceholderType.FLOAT, default=0.1, description="这是一个float类型的参数") Enum类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_enum", placeholder_type=wf.PlaceholderType.ENUM, default="a", enum_list=["a", "b"], description="这是一个enum类型的参数") dict类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_dict", placeholder_type=wf.PlaceholderType.JSON, default={"key": "value"}, description="这是一个dict类型的参数") list类型参数 from modelarts import workflow as wfwf.Placeholder(name="placeholder_list", placeholder_type=wf.PlaceholderType.LIST, default=[1, 2], placeholder_format="int", description="这是一个list类型的参数,并且value类型为int") 父主题: 参数配置
  • 部分运行 Workflow通过支持预置场景的方式来实现部分运行的能力,在开发工作流时按照场景的不同对DAG进行划分,之后在运行态可选择任意场景单独运行。具体代码示例如下所示: workflow =wf.Workflow( name="image_cls", desc="this is a demo workflow", steps=[label_step, release_data_step, training_step, model_step, service_step], policy=wf.policy.Policy( scenes=[ wf.policy.Scene( scene_name="模型训练", scene_steps=[label_step, release_data_step, training_step] ), wf.policy.Scene( scene_name="服务部署", scene_steps=[model_step, service_step] ), ] )) 该示例中workflow包含了五个节点(节点相关定义已省略),在policy中定义了两个预置场景:模型训练和服务部署,工作流发布至运行态后,部分运行的开关默认关闭,节点全部运行。用户可在全局配置页面打开开关,选择指定的场景进行运行。 部分运行能力支持同一个节点被定义在不同的运行场景中,但是需要用户自行保证节点之间数据依赖的正确性。另外,部分运行能力仅支持在运行态进行配置运行,不支持在开发态进行调试。 父主题: 高阶能力
  • 功能介绍 统一存储主要用于工作流的目录管理,帮助用户统一管理一个工作流中的所有存储路径,主要分为以下两个功能: 输入目录管理:开发者在编辑开发工作流时可以对所有数据的存储路径做统一管理,规定用户按照自己的目录规划来存放数据,而存储的根目录可以根据用户自己的需求自行配置。该方式只做目录的编排,不会自动创建新的目录。 输出目录管理:开发者在编辑开发工作流时可以对所有的输出路径做统一管理,用户无需手动创建输出目录,只需要在工作流运行前配置存储根路径,并且可以根据开发者的目录编排规则在指定目录下查看输出的数据信息。此外同一个工作流的多次运行支持输出到不同的目录下,对不同的执行做了很好的数据隔离。 父主题: 统一存储
  • 功能介绍 通过对ModelArts数据集能力进行封装,实现数据集的版本自动发布的功能。数据集版本发布节点主要用于将已存在的数据集或者标注任务进行版本发布,每个版本相当于数据的一个快照,可用于后续的数据溯源。主要应用场景如下: 对于数据标注这种操作,可以在标注完成后自动帮助用户发布新的数据集版本,结合as_input的能力提供给后续节点使用。 当模型训练需要更新数据时,可以使用数据集导入节点先导入新的数据,然后再通过该节点发布新的版本供后续节点使用。 父主题: 数据集版本发布节点
  • 功能介绍 通过对ModelArts数据集能力进行封装,实现数据集的数据导入功能。数据集导入节点主要用于将指定路径下的数据导入到数据集或者标注任务中,主要应用场景如下: 适用于数据不断迭代的场景,可以将一些新增的原始数据或者已标注数据导入到标注任务中,并通过后续的数据集标注节点进行标注。 对于一些已标注好的原始数据,可以直接导入到数据集或者标注任务中,并通过后续的数据集版本发布节点获取带有版本信息的数据集对象。 父主题: 数据集导入节点
  • OBS请求条件 您可以在创建自定义策略时,通过添加“请求条件”(Condition元素)来控制策略何时生效。请求条件包括条件键和运算符,条件键表示策略语句的Condition元素,分为全局级条件键和服务级条件键。全局级条件键(前缀为g:)适用于所有操作,服务级条件键(前缀为服务缩写,如obs:)仅适用于对应服务的操作。运算符与条件键一起使用,构成完整的条件判断语句。 OBS通过 IAM 预置了一组条件键,例如,您可以先使用obs:SourceIp条件键检查请求者的IP地址,然后再允许执行操作。 OBS支持的条件键和运算符与桶策略的Condition一致,在IAM配置时需要在前面加上“obs:”。详细的Condition介绍请参见Policy格式。 父主题: 配置IAM权限
  • HTTP状态码 表3中“http_code”维度支持如下HTTP状态码。 表5 HTTP状态码列表 HTTP状态码 说明 400 请求报文格式错误。 401 认证授权失败。 403 权限不足,访问拒绝,MimeType限定,无法上传该类型文件等。 404 请求资源不存在。 405 指定的方法不允许操作在请求的资源上。 406 上传数据的CRC32校验失败。 413 上传对象大小错误。 499 客户端断流或客户端数据流传输超时。 579 上传成功,但回调失败。 599 服务端操作失败。 612 指定资源不存在或已被删除。 614 目标资源已存在。 650 监控callback访问源站超时、失败等情况。 701 Block过期,分片不连续,block总大小和对象大小不匹配等。
  • 操作场景 用户在使用OBS的过程中会不断发送PUT、GET类的请求,产生上传、下载流量,也可能会遇到服务端返回的错误响应。用户可使用 云监控服务 (Cloud Eye)监控自己的OBS桶,执行自动实时监控、告警和通知操作,帮助您实时掌握桶中所产生的请求、流量和错误响应等信息。 云监控 服务不需要开通,会在用户创建资源(如OBS桶)后自动启动。关于云监控服务的更多介绍,请参见云监控服务产品介绍。 图1 云监控示意图
  • 创建用于跨区域复制的委托 在OBS控制台“创建跨区域复制规则”对话框,单击“查看IAM委托”,进入“ 统一身份认证 服务”控制台“委托”页面。 单击“创建委托”,进行委托创建。 输入“委托名称”。 “委托类型”选择“云服务”。 “云服务”选择“ 对象存储服务 OBS”。 选择“持续时间”。 单击“下一步”。 创建委托控制台界面有新版和旧版两种,以下操作步骤以新版为例。 在“选择策略”页面,选择“OBS Administrator”权限,单击“下一步”。 选择授权范围方案时,选择“全局服务资源”,单击下方的“确定”完成委托创建。 (可选)如果勾选了“复制使用KMS加密的对象”,源桶和目标桶所在区域还需要具有“KMS Administrator”权限。 在“统一身份认证服务”管理控制台“委托”页面,单击上一步创建的委托名称。 选择“委托权限”页签,单击“配置权限”。 在作用范围区域选择“区域级项目”,分别选择源桶和目标桶所在区域的项目。 在权限区域搜索并选择“KMS Administrator”权限,单击下方的“确定”完成委托权限修改。
  • 升配资源包 在OBS管理控制台左侧导航栏选择“资源包管理”。 选择需要升配的资源包所属区域和类型。 在操作栏单击“升配”,进入资源包升配页面,如图4所示。 医疗影像单AZ存储包不支持升配。 如果资源包规格已经是最高级别,支持进入升配操作页面,但仅支持查看不支持选择规格进行升配。 正在升配中的资源包不支持进行再次升配操作。 如果资源包在1个小时后到期,资源包不支持升配。 图4 选择“升配”操作 配置升配后的规格。 在升配规格区单击变更后的规格。下方展示升配后的资源包规格信息。如图5所示。 选择资源包变更后的规格时,仅支持选择大于当前规格的规格。 资源包升配不支持批量操作。 图5 资源包升配页面 单击右下角“立即购买”。 查看并确认升配信息,单击“去支付”,并在支付页面完成付款。 资源包升配成功,资源包类型、起止时间(有效期)不变。 资源包升配后,原资源包继续生效,下一重置周期(按整点重置)新资源包才会生效。例如:在9点45分升配资源包,10点整新资源包升配成功并生效。 在升配订单未完成前,继续升配相同规格,规格补交费用为0。例如:你原来的资源包为100GB,你升配到了500GB,但后台处理完这个升配需求大概需要10~30秒的时间,在此期间,如果你继续升配,并升配到相同的500GB,这时候规格补交费用为0。 支持资源包到期当天进行升配,可升配到最大规格且规格补交费用为0。但支持升配时间将在当晚23:00截止,最后一小时不允许升配。 如果升配未生效的资源包,则升配操作立即生效,但该资源包依然处于未生效状态。 如果您的包月资源包进行了升配,赠送的请求次数也会进行升级。剩余请求次数=升配后的请求次数-原来已使用的请求次数。 如果您升配的资源包是流量包,剩余的容量=升配后的容量-原来已消耗的容量。 图6 支付规格补交费用
  • 续费资源包 在OBS管理控制台左侧导航栏选择“资源包管理”。 选择所要续费的资源包所属区域和类型。 在需要续费的资源包操作列,单击“续费”。 图2 续费资源包 选择续费时长。 页面将显示资源包在续费后的到期时间,以及对应的费用。 图3 选择续费时长 (可选)根据需要,选择是否统一到期日为每月1号。 将到期时间延长至统一到期日,可能产生额外的续费天数,进而产生额外的费用。选择此项后,请务必核对清楚续费时长和费用信息。 确认无误后,单击“去支付”,并在支付页面完成付款。
  • 访问图片处理的方式 您可以使用两种方式访问图片处理。 通过管理控制台查看OBS中图片使用相应图片样式模板的图片预览效果。 用户可以在管理控制台图片处理界面通过按钮或编辑代码操作创建图片样式模板,在图片预览区域预览图片使用相应样式模板的效果,通过复制链接按钮获取使用样式后的图片URL进行使用。 控制台访问方式快速入门请参考开始图片处理(控制台)。 通过应用程序调用简单的RESTful API接口来访问图片处理服务。 OBS提供了REST接口。REST从资源的角度来观察整个网络,分布在各处的资源由URI(Uniform Resource Identifier)确定,而客户端的应用通过URL(Unified Resource Locator)来获取资源。URL的一般格式为:https://Endpoint/uri。用户只需在浏览器地址栏中输入符合图片处理命令规则的URL,即可获取到处理后的图片。更多接口访问信息请参见《对象存储服务API参考》。 API接口访问方式快速入门请参考开始图片处理(接口)。 父主题: 简介
  • 图片处理功能概述 图片处理为存储在OBS上的图片提供如表1所示功能。 表1 图片处理功能一览表 功能 说明 使用方式 获取图片信息 获取图片的基本信息,包括:图片格式、大小、平均色值等。 接口调用 设置图片效果 支持对图片进行基础效果的设置,包括设置图片亮度、对比度,对图片进行整体锐化及模糊等处理。 控制台图形界面 控制台代码编辑 接口调用 图片缩略 支持对图片按照指定宽高和比例进行缩放。 控制台代码编辑 接口调用 设置图片水印 支持在图片指定位置添加文字、图片、图文混合的水印,并支持设置文字的颜色、字体和大小,对水印图片进行缩略、旋转和剪切等预处理。 控制台图形界面 控制台代码编辑 接口调用 转换图片格式 支持将图片转换为支持的图片格式,并支持对转换格式后的图片设置渐进显示。 控制台图形界面 控制台代码编辑 接口调用 图片旋转 支持将图片按照顺时针方向进行旋转,以及根据相机或手机的旋转信息进行自动旋转。 控制台代码编辑 接口调用 图片剪切 支持将图片按照指定宽高、内切圆半径、索引方式和圆角矩形大小进行剪切。 控制台代码编辑 接口调用 图片压缩 支持按照相对质量和绝对质量对jpg格式的图片进行压缩,压缩后的图片画质降低,占用的空间变小,在对图片质量要求不高的场景下可以节省流量、减少加载时间。 控制台代码编辑 接口调用 图片瘦身 支持在图片画质基本不变的情况下对图片进行瘦身,减小图片占用的空间,此功能可以在不影响图片质量的情况,有助于节省获取图片导致的流量开销,提升终端加载速度。 控制台代码编辑 接口调用 图片处理持久化 支持将处理后的图片异步存储至指定的OBS桶中,方便下次直接访问处理后的图片,减少图片处理花费的时间,提升用户体验。 控制台代码编辑 接口调用 按顺序对图片进行多种处理 支持在图片URL后输入多组图片处理命令,并通过指定的分割符连接,最终按照从左至右的顺序依次对图片进行处理。 控制台代码编辑 接口调用 自定义图片样式 支持通过创建图片样式对图片进行集中处理。对于需要相同处理操作的多张图片,可以通过创建样式避免重复的设置操作。 控制台图形界面 控制台代码编辑 父主题: 简介
  • 示例 获取图片example.jpg的平均色值,可在浏览器直接访问以下地址。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/average-hue 返回如下类似结果,表示成功获取到图片的平均色值。 {"RGB":"#28577D"} example.jpg原图如下: 获取到的平均色值(#28577D)对应的颜色为:
  • 什么是图片处理特性? 图片处理特性(Image Processing)集成于对象存储服务(Object Storage Service,OBS),为用户提供稳定、安全、高效、易用、低成本的图片处理服务,包括:图片瘦身、图片剪切、图片缩放、图片水印、格式转换等。 图片处理特性提供控制台和RESTful API接口的使用方法,使用户可以在任何时间和地点对存储在对象存储中的图片进行处理,并且可以快速获取到处理后的图片。 父主题: 常见问题
  • 示例 将图片输出为可以渐进显示的jpg格式图片。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/format,jpg/interlace,1 将图片输出为自上而下显示的jpg格式图片。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/format,jpg/interlace,0
  • 示例 先将图片缩略为高和宽均为100,输出相对质量80%格式为jpg的目标图。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/resize,w_100,h_100/quality,q_80 先将图片缩略为高和宽均为100,输出绝对质量80%格式为jpg的目标图。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/resize,w_100,h_100/quality,Q_80
  • 图片限制 支持的原图格式:jpg、jpeg、png、bmp、webp、gif、tiff。 支持的格式处理后的目标图格式:jpg、png、bmp、webp。 支持处理前的图片最大为25MB,且处理后的图片宽度限制为4096px,高度限制为5000px。 大于2M或者超过50帧的gif或webp等动态图片,直接返回原图,不作处理。 目前支持对CMYK颜色模式的图片进行裁剪、质量变换等操作,但不支持将其作为水印图片或者缩放处理,否则可能出现颜色的变化。
  • 示例 将example.jpg图片设置为圆角大小为100、格式为png的圆角图片。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/rounded-corners,r_100/format,png 将example.jpg图片设置为水平圆角大小为100、垂直圆角大小为200的圆角图片。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/rounded-corners,rx_100,ry_200
  • 接口调用示例 在原图加上文字水印,文字内容为:Hello,文字大小设置为60,颜色设置为红色,字体为方正书宋。 构造参数如下: 文字内容:对应安全Base64编码:SGVsbG8g5Zu,即text_SGVsbG8g5Zu 文字大小:size_60 文字颜色:color_FF0000 字体:type_ZmFuZ3poZW5nc2h1c29uZw== URL请求如下: https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/watermark,text_SGVsbG8g5Zu,size_60,color_FF0000,type_ZmFuZ3poZW5nc2h1c29uZw== 在原图加上文字水印,水印位置居中,文字顺时针旋转30度,其他参数同上。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/watermark,text_SGVsbG8g5Zu,size_60,color_FF0000,type_ZmFuZ3poZW5nc2h1c29uZw==,g_center,rotate_30 同时实现图文混合水印。文字内容是:Hello,文字大小为60,阴影设置为50,字体颜色为红色,位置在右下角。 水印图片是logo.png,水平边距和垂直边距都是10。 图文水印透明为50,排版方式是图片在前,对齐方式是下对齐。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/watermark,image_ZS1zaGFyZS9pbWFnZS1kZW1vL2xvZ28ucG5n,text_SGVsbG8g5Zu,size_60,color_FF0000,shadow_50,type_ZmFuZ3poZW5nc2h1c29uZw==,g_br,x_10,y_10,align_2,order_0 分开实现图文混合水印。文字内容是:Hello,文字大小为60,字体颜色为红色,位置在右下角。 水印图片是logo.png,水平边距和垂直边距分别是40,10。 图片水印透明为90,先实现图片水印,再实现文字水印。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/watermark,image_ZS1zaGFyZS9pbWFnZS1kZW1vL2xvZ28ucG5n,g_br,t_90,x_45,y_10/watermark,text_SGVsbG8g5Zu,size_60,color_FF0000,type_ZmFuZ3poZW5nc2h1c29uZw==,g_br,x_0,y_330
  • 图形界面示例 图片水印可以通过OBS控制台新建图片样式设置。水印图片文件是:logo.png(logo图片地址:e-share/image-demo/logo.png),水印图片置于右下角,透明度为90,水平边距和垂直边距默认值都为10。在控制台上的具体操作步骤如下: 在OBS管理控制台首页,单击目标桶名称,在左侧导航栏中选择“图片处理”。 单击“新建样式”,进入样式编辑界面。 在编辑页面,输入“样式名称”,“编辑模式”选择“图形界面模式”,并选择“水印设置”。 样式名称只能由大写或小写的英文字母、数字、英文句号(.)、下划线(_)和连字符(-)组成。长度为1~256个字符。例如:rotate_0001。 设置如下水印参数,如图4所示。 水印类型:选择“图片水印” 水印图路径:输入“e-share/image-demo/logo.png” 图片尺寸(%):根据是否缩小水印图标设置 亮度:保持默认值0 对比度:保持默认值0 透明度:设置为90 水印位置:选择右下角的箭头 垂直边距:保持默认值10 水平边距:保持默认值10 图4 设置图片水印 完成样式的编辑后,单击“确定”保存样式。新建成功的样式将会显示在样式列表中。 后续即可参考使用图片样式使用新建的水印样式处理图片。
  • 公共参数 此功能在控制台图形界面模式和代码编辑模式使用,也支持通过接口调用模式使用。 可以将文字内容或另一张图片设置为原图的水印。 添加水印中的文字内容和字体或图片水印路径均需使用用于URL传输的Base64编码。标准的Base64编码并不适合直接放在URL里传输。用于URL传输的Base64编码的编码方式基本过程是:先用标准Base64编码将内容编码为字符串,然后检查该字符串,将字符串中的加号(+)换成中划线(-),并且将斜杠(/)换成下划线(_)。详细编码规范请参考RFC4648标准中的相关描述。 操作名称:watermark 公共参数为设置图片水印和文字水印均可以使用的参数,可以同时添加文字和图片水印。具体基础参数说明如表1所示。 表1 公共参数 参数 取值说明 代码样例 g 可选参数,表示水印处于图片的位置。取值为tl、top、tr、left、center、right、bl、bottom和br,共9个取值。默认值为tl。 取值的九宫格如图1所示,每个取值位置均位于每一小格的左上角顶点。 image/watermark,image_aW1hZ2UtZGVtby 9sb2dvLnBuZw==,g_br,t_90,x_10,y_10 x 可选参数,表示距离图片边缘的水平距离,默认左上角为原点。取值范围为[0,4096]。默认值为10。单位为像素(px)。 y 可选参数,表示距离图片边缘的垂直距离,默认左上角为原点。取值范围为[0,4096]。默认值为10。单位为像素(px)。 voffset 可选参数,表示水印距离图片水平中线的垂直偏移方向。可以使水印根据中线往上或往下偏移。取值范围为[-1000,1000]。默认值为0。单位为像素(px)。 当g取值为left、center、right才有意义,即位置为左中、正中、右中才有意义。 align 可选参数,水印文字和图片的对齐方式。取值为0、1或2。默认值为0。 0:表示上对齐。 1:表示中对齐。 2:表示下对齐。 order 可选参数,水印文字和图片的前后顺序。取值为0或1。默认值为0。 0:表示图片在前面。 1:表示文字在前面。 t 可选参数,文字或图片水印的透明度。取值范围为[0,100]。默认值为100,100%表示不透明。 interval 可选参数,表示文字和图片的间距。取值范围为[0,1000]。 水印位置九宫格如图1所示。 图1 水印位置九宫格 如果为原图同时添加文字和图片水印时,水平距离x、垂直距离y和中线垂直偏移voffset可以用于调节水印位于原图中的位置,也可以调节两张水印的布局。 父主题: 设置水印
  • 示例 剪切起点坐标设置为(1000,500),剪切的宽和高均设置为1000。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/crop,x_1000,y_500,w_1000,h_1000 剪切起点设置在九宫格右下角br区,起点坐标为(10,10),剪切的宽和高均设置为200。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/crop,x_10,y_10,w_200,h_200,g_br
  • 示例 将图片宽度设置为100且旋转角度设置为90。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/resize,w_100/rotate,90 将图片宽度设置为100且旋转角度设置为220。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/resize,w_100/rotate,220
  • 示例 将图片样式的亮度设置为50。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/bright,50 将图片样式的亮度设置为-50。 https://e-share.obs.cn-north-1.myhuaweicloud.com/example.jpg?x-image-process=image/bright,-50
  • 使用流程 OBS提供了REST接口。REST从资源的角度来观察整个网络,分布在各处的资源由URI(Uniform Resource Identifier)确定,而客户端的应用通过URL(Unified Resource Locator)来获取资源。URL的一般格式为:https://Endpoint/uri。用户只需在浏览器地址栏中输入符合图片处理命令规则的URL,即可获取到处理后的图片。 本章简要展示使用RESTful API接口方式访问和使用图片处理的流程,具体如图1所示。 图1 接口场景使用流程 父主题: 开始图片处理(接口)
共100000条