数据工坊(Data Workroom,DWR)是一款近数据处理服务,通过易用的数据处理工作流编排和开放生态的数据处理算子,能够在云上实现图像、视频、文档、图片等数据处理业务。本仓库演示了如何调用dwr-go-sdk创建图片裁剪工作流并对OBS桶里的图片进行裁剪。
H
huaweicloud-dwr-sdk-demo-go
1.介绍
本示例介绍了如何使用华为云DWR服务的Go SDK创建包含图片裁剪算子的同步工作流,并触发工作流,对原图裁剪,获得裁剪后的图片。
2.版本说明
本示例配套的SDK版本为v0.1.12
3.准备工作
- 参考华为云DWR开发工具包(SDK) 引入 DWR Go SDK
- 要使用华为云DWR Go SDK,您需要拥有华为云账号以及该账号对应的 Access Key(AK)和 Secret Access Key(SK)。
- 获取您期望使用的目标终端节点(参考华为云DWR endpoint列表)
- 示例工作流运行需要使用包含OBS读取权限的委托(参考IAM创建委托)
- 华为云 DWR Go SDK 需要运行在 Go 1.14 及以上版本。
4.示例代码
- 构造client
client := dwr.NewDwrClient(
dwr.DwrClientBuilder().
WithEndpoint(endpoint).
WithCredential(
basic.NewCredentialsBuilder().
WithAk(ak).
WithSk(sk).
WithProjectId(projectId).
Build()).
WithHttpConfig(config.DefaultHttpConfig().
WithIgnoreSSLVerification(true).
WithHttpHandler(httphandler.NewHttpHandler().AddResponseHandler(func(response http.Response) {
fmt.Println(response.Header)
}))).
Build())
- 查询图片裁剪算子
templateInfoResponse, err := client.ShowSystemTemplateDetail(&model.ShowSystemTemplateDetailRequest{TemplateName: "ImageCrop"})
if err != nil {
fmt.Printf("failed to query public action template: %s", err.Error())
return
}
- 创建工作流
createResponse, err := client.CreateWorkflow(&model.CreateWorkflowRequest{
GraphName: workflowName,
Body: &model.CreateWorkflowRequestBody{
States: &[]model.State{{
Type: model.GetStateTypeEnum().END,
StateName: endState,
}, {
Start: &start,
Type: model.GetStateTypeEnum().OPERATION,
PayloadFilterIn: &payloadFilter,
PayloadFilterOut: &payloadFilter,
StateName: "ImageCrop",
ActionMode: &actionMode,
Actions: &actions,
NextState: &endState,
}},
Inputs: &workflowInputs,
Description: &description,
Mode: &mode,
ExpressConfig: &model.ExpressConfig{
SupportAnonymous: &supportAnonymous,
},
},
})
if err != nil || createResponse.HttpStatusCode != http.StatusCreated {
fmt.Printf("failed to create workflow, err: %#v, response: %#v", err, createResponse)
return err
}
- 触发工作流
response, err := http.Get(fmt.Sprintf("%s?x-workflow-graph-name=%s", imgUrl, workflowName))
if err != nil {
fmt.Printf("failed to get cropped image: %s", err.Error())
return
}
defer func() {
err := response.Body.Close()
if err != nil {
fmt.Printf("failed to close body\n")
}
}()
5.备注
示例代码中截取原图左上角100x100范围的内容,为保证裁剪效果,需要原图片分辨率大于100x100,同时小于图片转码的最大限制(参考OBS图片处理约束条件)。
6.参考
更多信息请参考DWR数据工坊
7.修订记录
| 发布日期 | 文档版本 | 修订说明 |
|---|---|---|
| 2022-11-25 | 1.0 | 文档首次发布 |
Introduction
数据工坊(Data Workroom,DWR)是一款近数据处理服务,通过易用的数据处理工作流编排和开放生态的数据处理算子,能够在云上实现图像、视频、文档、图片等数据处理业务。本仓库演示了如何调用dwr-go-sdk创建图片裁剪工作流并对OBS桶里的图片进行裁剪。
Customize my domainDownloads
0
Total downloads (including clone, pull, ZIP & release downloads), updated by T+1.
Languages
Go92.47%
Shell7.53%