Skip to content

Commit

Permalink
Add FacePlateMosaic API
Browse files Browse the repository at this point in the history
  • Loading branch information
markjrzhang committed Jul 30, 2024
1 parent ea7c875 commit ed078d6
Show file tree
Hide file tree
Showing 20 changed files with 420 additions and 27 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.221</version>
<version>5.6.223</version>
<packaging>jar</packaging>
<name>cos-java-sdk</name>
<description>java sdk for qcloud cos</description>
Expand Down
9 changes: 7 additions & 2 deletions src/main/java/com/qcloud/cos/COSClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,9 @@ protected <X extends CosServiceRequest> CosHttpRequest<X> createRequest(String b
CosHttpRequest<X> httpRequest = new CosHttpRequest<X>(originalRequest);
httpRequest.setHttpMethod(httpMethod);
httpRequest.addHeader(Headers.USER_AGENT, clientConfig.getUserAgent());
if (originalRequest.getCustomRequestHeaders() != null && originalRequest.getCustomRequestHeaders().containsKey("Pic-Operations")) {
httpRequest.addHeader("Pic-Operations", originalRequest.getCustomRequestHeaders().get("Pic-Operations"));
}
if (originalRequest instanceof ListBucketsRequest) {
buildUrlAndHost(httpRequest, bucketName, key, true);
} else {
Expand Down Expand Up @@ -959,8 +962,10 @@ ObjectMetadata uploadObjectInternal(UploadMode uploadMode, UploadObjectRequest u
populateRequestMetadata(request, metadata);
request.setContent(input);
try {
if(uploadObjectRequest.getPicOperations() != null) {
request.addHeader(Headers.PIC_OPERATIONS, Jackson.toJsonString(uploadObjectRequest.getPicOperations()));
if(uploadObjectRequest.getPicOperations() != null || (uploadObjectRequest.getCustomRequestHeaders() != null && uploadObjectRequest.getCustomRequestHeaders().containsKey(Headers.PIC_OPERATIONS)) ) {
if (uploadObjectRequest.getCustomRequestHeaders() == null || !uploadObjectRequest.getCustomRequestHeaders().containsKey(Headers.PIC_OPERATIONS)){
request.addHeader(Headers.PIC_OPERATIONS, Jackson.toJsonString(uploadObjectRequest.getPicOperations()));
}
returnedMetadata = invoke(request, new ResponseHeaderHandlerChain<ObjectMetadata>(
new Unmarshallers.ImagePersistenceUnmarshaller(), new CosMetadataResponseHandler()));
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ public static void persistenceImage(COSClient cosClient) {
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());
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/com/qcloud/cos/internal/Unmarshallers.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.qcloud.cos.model.*;
import com.qcloud.cos.model.bucketcertificate.BucketGetDomainCertificate;
import com.qcloud.cos.model.ciModel.auditing.AudioAuditingResponse;
import com.qcloud.cos.model.ciModel.auditing.AuditingKeywordResponse;
import com.qcloud.cos.model.ciModel.auditing.AuditingStrategyListResponse;
import com.qcloud.cos.model.ciModel.auditing.AuditingStrategyResponse;
import com.qcloud.cos.model.ciModel.auditing.AuditingTextLibResponse;
Expand All @@ -56,6 +57,7 @@
import com.qcloud.cos.model.ciModel.job.MediaListJobResponse;
import com.qcloud.cos.model.ciModel.mediaInfo.MediaInfoResponse;
import com.qcloud.cos.model.ciModel.persistence.AIGameRecResponse;
import com.qcloud.cos.model.ciModel.persistence.CIUploadResult;
import com.qcloud.cos.model.ciModel.persistence.DetectCarResponse;
import com.qcloud.cos.model.ciModel.queue.DocListQueueResponse;
import com.qcloud.cos.model.ciModel.queue.MediaListQueueResponse;
Expand Down Expand Up @@ -146,8 +148,8 @@ public static final class ImagePersistenceUnmarshaller
implements Unmarshaller<ObjectMetadata, InputStream> {
public ObjectMetadata unmarshall(InputStream in) throws Exception {
ObjectMetadata objectMetadata = new ObjectMetadata();
objectMetadata.setCiUploadResult(new XmlResponsesSaxParser().parseImagePersistenceResponse(in)
.getCiUploadResult());
CICommonUnmarshaller<CIUploadResult> unmarshaller = new CICommonUnmarshaller<>(CIUploadResult.class);
objectMetadata.setCiUploadResult(unmarshaller.unmarshall(in));
return objectMetadata;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
package com.qcloud.cos.model.ciModel.metaInsight;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.fasterxml.jackson.annotation.JsonProperty;

@XStreamAlias("Aggregations")
public class Aggregations {

/**
* 聚合字段的操作符。枚举值:min:最小值。max:最大值。average:平均数sum:求和。count:计数。distinct:去重计数。group:分组计数,按照分组计数结果从高到低排序。
*/
@XStreamAlias("Operation")
@JsonProperty("Operation")
private String operation;

/**
*字段名称。关于支持的字段,请参考字段和操作符的支持列表。
*/
@XStreamAlias("Field")
@JsonProperty("Field")
private String field;

public String getOperation() { return operation; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.fasterxml.jackson.annotation.JsonProperty;
public class ImageResult {

/**
*资源标识字段,表示需要建立索引的文件地址。
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,46 @@
package com.qcloud.cos.model.ciModel.persistence;

import com.qcloud.cos.model.ciModel.recognition.QRcodeInfo;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

import java.util.List;

public class CIObject {
@XStreamAlias("Key")
private String key;

@XStreamAlias("Location")
private String location;

@XStreamAlias("Format")
private String format;
private Integer width;
private Integer height;
private Integer size;
private Integer quality;

@XStreamAlias("Width")
private int width;

@XStreamAlias("Height")
private int height;

@XStreamAlias("Size")
private int size;

@XStreamAlias("Quality")
private int quality;

@XStreamAlias("FrameCount")
private int frameCount;

@XStreamAlias("ETag")
private String etag;

@XStreamAlias("WatermarkStatus")
private Integer watermarkStatus;
@XStreamAlias("CodeStatus")
private Integer codeStatus;
@XStreamImplicit(keyFieldName = "QRcodeInfo")
private List<QRcodeInfo> QRcodeInfoList;

public String getKey() {
return key;
}
Expand Down Expand Up @@ -103,4 +128,28 @@ public Integer getWatermarkStatus() {
public void setWatermarkStatus(Integer watermarkStatus) {
this.watermarkStatus = watermarkStatus;
}

public void setWidth(int width) {
this.width = width;
}

public void setHeight(int height) {
this.height = height;
}

public void setSize(int size) {
this.size = size;
}

public void setQuality(int quality) {
this.quality = quality;
}

public int getFrameCount() {
return frameCount;
}

public void setFrameCount(int frameCount) {
this.frameCount = frameCount;
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
package com.qcloud.cos.model.ciModel.persistence;

import com.qcloud.cos.model.CosServiceResult;
import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("UploadResult")
public class CIUploadResult extends CosServiceResult {
@XStreamAlias("OriginalInfo")
private OriginalInfo originalInfo;
@XStreamAlias("ProcessResults")
private ProcessResults processResults;
@XStreamAlias("FaceDetailInfos")
private FaceDetailInfos faceDetailInfos;
@XStreamAlias("PlateDetailInfos")
private PlateDetailInfos plateDetailInfos;
@XStreamAlias("Face")
private FailedMessage face;
@XStreamAlias("Plate")
private FailedMessage plate;

public OriginalInfo getOriginalInfo() {
return originalInfo;
}
Expand All @@ -20,4 +33,37 @@ public ProcessResults getProcessResults() {
public void setProcessResults(ProcessResults processResults) {
this.processResults = processResults;
}


public FailedMessage getFace() {
return face;
}

public void setFace(FailedMessage face) {
this.face = face;
}

public FailedMessage getPlate() {
return plate;
}

public void setPlate(FailedMessage plate) {
this.plate = plate;
}

public FaceDetailInfos getFaceDetailInfos() {
return faceDetailInfos;
}

public void setFaceDetailInfos(FaceDetailInfos faceDetailInfos) {
this.faceDetailInfos = faceDetailInfos;
}

public PlateDetailInfos getPlateDetailInfos() {
return plateDetailInfos;
}

public void setPlateDetailInfos(PlateDetailInfos plateDetailInfos) {
this.plateDetailInfos = plateDetailInfos;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.qcloud.cos.model.ciModel.persistence;

import com.qcloud.cos.model.ciModel.ai.FaceRect;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

import java.util.List;

public class FaceDetailInfos {
@XStreamImplicit(itemFieldName = "FaceRect")
List<FaceRect> faceRectList;

public List<FaceRect> getFaceRectList() {
return faceRectList;
}

public void setFaceRectList(List<FaceRect> faceRectList) {
this.faceRectList = faceRectList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.qcloud.cos.model.ciModel.persistence;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.ArrayList;
import java.util.List;


public class FacePlateMosaicObject {
@JsonProperty("is_pic_info")
private int isPicInfo = 1;
private List<RuleItem> rules;

public int getIsPicInfo() {
return isPicInfo;
}

public void setIsPicInfo(int isPicInfo) {
this.isPicInfo = isPicInfo;
}

public List<RuleItem> getRules() {
if (rules == null) {
rules = new ArrayList<>();
}
return rules;
}

public void setRules(List<RuleItem> rules) {
this.rules = rules;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.qcloud.cos.model.ciModel.persistence;

import com.thoughtworks.xstream.annotations.XStreamAlias;

public class FailedMessage {
@XStreamAlias("State")
private String state;

@XStreamAlias("ErrorCode")
private String errorCode;

@XStreamAlias("ErrorMsg")
private String errorMsg;

public String getState() {
return state;
}

public void setState(String state) {
this.state = state;
}

public String getErrorCode() {
return errorCode;
}

public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}

public String getErrorMsg() {
return errorMsg;
}

public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
}
Loading

0 comments on commit ed078d6

Please sign in to comment.