tencent cloud

数据万象

动态与公告
产品动态
产品公告
产品简介
产品概述
产品优势
应用场景
功能概览
地域与域名
使用限制
产品计费
计费概述
计费方式
计费项
免费额度
欠费说明
查看消费明细
常见问题
快速入门
注册与登录
绑定存储桶
上传和处理文件
下载和删除文件
解绑存储桶
通过 COS 使用数据万象
能力地图
图片处理
媒体处理
内容审核
AI 内容识别
文档处理
智能语音
文件处理
用户指南
概览
存储桶管理
智能工具箱
任务与工作流
数据监控
用量统计
实践教程
版权保护解决方案
图片处理实践
API 授权策略使用指引
工作流实践
API 文档
API 概览
结构体
公共请求头部
公共响应头部
开通万象服务
图片处理
AI 内容识别
智能语音
媒体处理
内容审核
文档处理
文件处理
任务与工作流
云查毒
错误码
请求签名
SDK 文档
SDK 概览
图片处理 Android SDK
图片处理 iOS SDK
COS Android SDK
C SDK
C++ SDK
.NET(C#) SDK
Go SDK
COS iOS SDK
Java SDK
JavaScript SDK
Node.js SDK
PHP SDK
Python SDK
小程序 SDK
SDK 产品个人信息保护规则
安全与合规
权限管理
常见问题
基础设置
文档处理
媒体处理
内容识别
智能语音
服务协议
Service Level Agreement
联系我们
词汇表

图片持久化处理

PDF
聚焦模式
字号
最后更新时间: 2024-03-13 10:07:10

简介

本文示例展示了如何在上传图片时自动实现图片处理。
图片上传完成后,对象存储(Cloud Object Storage,COS)会存储原始图片和已处理过的图片。后续用户可以通过普通的下载请求获取处理结果。

上传时图片持久化处理

示例代码

// bucket名需包含appid
// api 请参考 https://www.tencentcloud.com/document/product/436/54050?from_cn_redirect=1
String bucketName = "examplebucket-1250000000";

String key = "test.jpg";
File localFile = new File("E://test.jpg");
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
PicOperations picOperations = new PicOperations();
picOperations.setIsPicInfo(1);
// 添加图片处理规则
List<PicOperations.Rule> ruleList = new LinkedList<>();
PicOperations.Rule rule1 = new PicOperations.Rule();
rule1.setBucket(bucketName);
rule1.setFileId("test-1.jpg");
rule1.setRule("imageMogr2/rotate/90");
ruleList.add(rule1);
PicOperations.Rule rule2 = new PicOperations.Rule();
rule2.setBucket(bucketName);
rule2.setFileId("test-2.jpg");
rule2.setRule("imageMogr2/rotate/180");
ruleList.add(rule2);
picOperations.setRules(ruleList);
putObjectRequest.setPicOperations(picOperations);
try {
PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
CIUploadResult ciUploadResult = putObjectResult.getCiUploadResult();
System.out.println(putObjectResult.getRequestId());
System.out.println(ciUploadResult.getOriginalInfo().getEtag());
for(CIObject ciObject:ciUploadResult.getProcessResults().getObjectList()) {
System.out.println(ciObject.getLocation());
System.out.println(ciObject.getEtag());
}
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}

参数说明

PicOperations 类用于记录图像操作,其主要成员说明如下:
成员名称
描述
类型
isPicInfo
是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0
int
rules
处理规则,一条规则对应一个处理结果(目前支持五条规则),不填则不进行图片处理
List

返回参数说明

CIUploadResult 类用于返回图片处理结果信息,其主要成员说明如下:
成员名称
描述
类型
originalInfo
原图信息
OriginalInfo
processResults
图片处理结果
ProcessResults
OriginalInfo 类用于记录原图信息,其主要成员说明如下:
成员名称
描述
类型
key
原图文件名
String
location
图片路径
String
imageInfo
原图图片信息
ImageInfo
etag
原图 ETag 信息(若处理结果图覆盖原图则为结果图 ETag 信息)
String
ImageInfo 类用于记录原图图片信息,其主要成员说明如下:
成员名称
描述
类型
format
格式
String
width
图片宽度
Integer
height
图片高度
Integer
quality
图片质量
Integer
ave
图片主色调
String
orientation
图片旋转角度
Integer
ProcessResults 类用于记录图片处理结果,其主要成员说明如下:
成员名称
描述
类型
objectList
每一个图片处理结果
List
CIObject 类用于记录一个图片处理结果,其主要成员说明如下:
成员名称
描述
类型
key
文件名
String
location
图片路径
String
format
图片格式
String
width
图片宽度
Integer
height
图片高度
Integer
size
图片大小
Integer
quality
图片质量
Integer
etag
处理结果图 ETag 信息
String

对云上数据进行图片处理

下面示例展示了如何对已存储在 COS 的图片进行相应处理操作,并将结果存入到 COS。

示例代码

String bucketName = "examplebucket-1250000000";
String key = "test.jpg";
ImageProcessRequest imageReq = new ImageProcessRequest(bucketName, key);

PicOperations picOperations = new PicOperations();
picOperations.setIsPicInfo(1);
List<PicOperations.Rule> ruleList = new LinkedList<>();
PicOperations.Rule rule1 = new PicOperations.Rule();
rule1.setBucket(bucketName);
rule1.setFileId("test-1.jpg");
rule1.setRule("imageMogr2/rotate/90");
ruleList.add(rule1);
PicOperations.Rule rule2 = new PicOperations.Rule();
rule2.setBucket(bucketName);
rule2.setFileId("test-2.jpg");
rule2.setRule("imageMogr2/rotate/180");
ruleList.add(rule2);
picOperations.setRules(ruleList);

imageReq.setPicOperations(picOperations);

CIUploadResult result = cosClient.processImage(imageReq);
result.getProcessResults();
result.getOriginalInfo();

try {
CIUploadResult ciUploadResult = cosClient.processImage(imageReq);
System.out.println(ciUploadResult.getOriginalInfo().getEtag());
for(CIObject ciObject:ciUploadResult.getProcessResults().getObjectList()) {
System.out.println(ciObject.getLocation());
System.out.println(ciObject.getEtag());
}
} catch (CosServiceException e) {
e.printStackTrace();
} catch (CosClientException e) {
e.printStackTrace();
}

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈