2727import java .util .List ;
2828
2929/**
30- * 盲水印相关demo API 接口说明:https://cloud.tencent.com/document/product/460/19017
30+ * 盲水印相关demo API 接口说明:https://cloud.tencent.com/document/product/436/46782
3131 */
3232public class BlindWatermarkDemo {
33+ /**
34+ * 上传时添加盲水印
35+ */
3336 public static void addBlindWatermark (COSClient cosClient ) {
34- // bucket名需包含appid
35- // api 请参考:https://cloud.tencent.com/document/product/436/46782
36- String bucketName = "examplebucket-1250000000" ;
37-
38- String key = "qrcode.png" ;
39- File localFile = new File ("E://qrcode.png" );
37+ String bucketName = "markjrzhang-1251704708" ;
38+ String key = "qrcode.jpg" ;
39+ File localFile = new File ("demo.jpg" );
4040 PutObjectRequest putObjectRequest = new PutObjectRequest (bucketName , key , localFile );
4141 PicOperations picOperations = new PicOperations ();
4242 picOperations .setIsPicInfo (1 );
4343 List <PicOperations .Rule > ruleList = new LinkedList <>();
4444 PicOperations .Rule rule = new PicOperations .Rule ();
4545 rule .setBucket (bucketName );
46- rule .setFileId ("qrcode-watermark.png " );
46+ rule .setFileId ("BlindWatermark.jpg " );
4747 // 使用盲水印功能,水印图的宽高不得超过原图的1/8
48- rule .setRule ("watermark/3/type/2 /image/aHR0cDovL2V4YW1wbGVidWNrZXQtMTI1MDAwMDAwMC5jb3MuYXAtZ3Vhbmd6aG91Lm15cWNsb3VkLmNvbS9zaHVpeWluLnBuZw== " );
48+ rule .setRule ("watermark/3/type/1 /image/aHR0cHM6Ly9tYXJranJ6aGFuZy0xMjUxNzA0NzA4LmNvcy5hcC1jaG9uZ3FpbmcubXlxY2xvdWQuY29tL3NodWl5aW4uanBn " );
4949
5050 ruleList .add (rule );
5151 picOperations .setRules (ruleList );
@@ -65,100 +65,23 @@ public static void addBlindWatermark(COSClient cosClient) {
6565 }
6666 }
6767
68- public static void addBlindWatermarkWithTransferManager (TransferManager transferManager ) throws InterruptedException {
69- // bucket名需包含appid
70- // api 请参考:https://cloud.tencent.com/document/product/436/46782
71- String bucketName = "examplebucket-1250000000" ;
72- String key = "qrcode.png" ;
73- File localFile = new File ("E://qrcode.png" );
74- PutObjectRequest putObjectRequest = new PutObjectRequest (bucketName , key , localFile );
75- PicOperations picOperations = new PicOperations ();
76- picOperations .setIsPicInfo (1 );
77- List <PicOperations .Rule > ruleList = new LinkedList <>();
78- PicOperations .Rule rule1 = new PicOperations .Rule ();
79- rule1 .setBucket (bucketName );
80- rule1 .setFileId ("qrcode-watermark.png" );
81- rule1 .setRule ("watermark/3/type/3/text/dGVuY2VudCBjbG91ZA==" );
82- ruleList .add (rule1 );
83- picOperations .setRules (ruleList );
84- putObjectRequest .setPicOperations (picOperations );
85-
86- Upload upload = transferManager .upload (putObjectRequest );
87- UploadResult uploadResult = upload .waitForUploadResult ();
88- CIUploadResult ciUploadResult = uploadResult .getCiUploadResult ();
89- System .out .println (uploadResult .getRequestId ());
90- System .out .println (ciUploadResult .getOriginalInfo ().getEtag ());
91- for (CIObject ciObject :ciUploadResult .getProcessResults ().getObjectList ()) {
92- System .out .println (ciObject .getLocation ());
93- }
94- }
95-
96- public static void addBlindWatermarkWithMultipart (COSClient cosClient ) throws FileNotFoundException {
97- // bucket名需包含appid
98- // api 请参考:https://cloud.tencent.com/document/product/436/46782
99- String bucketName = "examplebucket-1250000000" ;
100-
101- String key = "qrcode.png" ;
102- File localFile = new File ("E://qrcode.png" );
103- InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest (bucketName , key );
104- InitiateMultipartUploadResult initResult = cosClient .initiateMultipartUpload (request );
105- String uploadId = initResult .getUploadId ();
106-
107- // 上传分块
108- List <PartETag > partETags = new LinkedList <>();
109- UploadPartRequest uploadPartRequest = new UploadPartRequest ();
110- uploadPartRequest .setBucketName (bucketName );
111- uploadPartRequest .setKey (key );
112- uploadPartRequest .setUploadId (uploadId );
113- // 设置分块的数据来源输入流
114- uploadPartRequest .setInputStream (new FileInputStream (localFile ));
115- // 设置分块的长度
116- uploadPartRequest .setPartSize (localFile .length ()); // 设置数据长度
117- uploadPartRequest .setPartNumber (1 ); // 假设要上传的part编号是10
118- UploadPartResult uploadPartResult = cosClient .uploadPart (uploadPartRequest );
119- PartETag partETag = uploadPartResult .getPartETag ();
120- partETags .add (partETag );
121-
122- // 合并分块并带上图像处理参数
123- CompleteMultipartUploadRequest completeMultipartUploadRequest =
124- new CompleteMultipartUploadRequest (bucketName , key , uploadId , partETags );
125- PicOperations picOperations = new PicOperations ();
126- picOperations .setIsPicInfo (1 );
127- List <PicOperations .Rule > ruleList = new LinkedList <>();
128- PicOperations .Rule rule1 = new PicOperations .Rule ();
129- rule1 .setBucket (bucketName );
130- rule1 .setFileId ("qrcode-watermark.png" );
131- rule1 .setRule ("watermark/3/type/3/text/dGVuY2VudCBjbG91ZA==" );
132- ruleList .add (rule1 );
133- picOperations .setRules (ruleList );
134- completeMultipartUploadRequest .setPicOperations (picOperations );
135-
136- CompleteMultipartUploadResult completeMultipartUploadResult =
137- cosClient .completeMultipartUpload (completeMultipartUploadRequest );
138-
139- CIUploadResult ciUploadResult = completeMultipartUploadResult .getCiUploadResult ();
140- System .out .println (completeMultipartUploadResult .getRequestId ());
141- System .out .println (ciUploadResult .getOriginalInfo ().getEtag ());
142- for (CIObject ciObject :ciUploadResult .getProcessResults ().getObjectList ()) {
143- System .out .println (ciObject .getLocation ());
144- }
145- }
146-
147- public static void extractBlindWatermark (COSClient cosClient ) {
148- // bucket名需包含appid
149- // api 请参考:https://cloud.tencent.com/document/product/436/46782
150- String bucketName = "examplebucket-1250000000" ;
151-
152- String key = "qrcode-watermark.png" ;
153- File localFile = new File ("E://qrcode-watermark.png" );
68+ /**
69+ * 上传时获取盲水印
70+ */
71+ public static void getBlindWatermark (COSClient cosClient ) {
72+ String bucketName = "markjrzhang-1251704708" ;
73+ String key = "qrcode.jpg" ;
74+ File localFile = new File ("BlindWatermark.jpg" );
15475 PutObjectRequest putObjectRequest = new PutObjectRequest (bucketName , key , localFile );
15576 PicOperations picOperations = new PicOperations ();
15677 picOperations .setIsPicInfo (1 );
15778 List <PicOperations .Rule > ruleList = new LinkedList <>();
15879 PicOperations .Rule rule = new PicOperations .Rule ();
15980 rule .setBucket (bucketName );
160- rule .setFileId ("qrcode-watermark-extract.png" );
161- rule .setRule ("watermark/4/type/2/image/aHR0cDovL2V4YW1wbGVidWNrZXQtMTI1MDAwMDAwMC5jb3MuYXAtZ3Vhbmd6aG91Lm15cWNsb3VkLmNvbS9zaHVpeWluLnBuZw==" );
81+ rule .setFileId ("BlindWatermark-test.jpg" );
82+ // 使用盲水印功能,水印图的宽高不得超过原图的1/8
83+ rule .setRule ("watermark/4/type/2/image/aHR0cHM6Ly9tYXJranJ6aGFuZy0xMjUxNzA0NzA4LmNvcy5hcC1jaG9uZ3FpbmcubXlxY2xvdWQuY29tL3NodWl5aW4uanBn" );
84+
16285 ruleList .add (rule );
16386 picOperations .setRules (ruleList );
16487 putObjectRequest .setPicOperations (picOperations );
@@ -169,7 +92,6 @@ public static void extractBlindWatermark(COSClient cosClient) {
16992 System .out .println (ciUploadResult .getOriginalInfo ().getEtag ());
17093 for (CIObject ciObject :ciUploadResult .getProcessResults ().getObjectList ()) {
17194 System .out .println (ciObject .getLocation ());
172- System .out .println (ciObject .getWatermarkStatus ());
17395 }
17496 } catch (CosServiceException e ) {
17597 e .printStackTrace ();
@@ -192,7 +114,7 @@ public static void addBlindWatermarkToExistImage(COSClient cosClient) {
192114 rule .setBucket (bucketName );
193115 rule .setFileId ("/image/result/dog.jpg" );
194116 // 使用盲水印功能,水印图的宽高不得超过原图的1/8
195- rule .setRule ("watermark/3/type/2/image/aHR0cDovL2V4YW1wbGVidWNrZXQtMTI1MDAwMDAwMC5jb3MuYXAtZ3Vhbmd6aG91Lm15cWNsb3VkLmNvbS9zaHVpeWluLnBuZw== " );
117+ rule .setRule ("watermark/3/type/2/image/aHR0cHM6Ly9tYXJranJ6aGFuZy0xMjUxNzA0NzA4LmNvcy5hcC1jaG9uZ3FpbmcubXlxY2xvdWQuY29tL3NodWl5aW4uanBn " );
196118
197119 ruleList .add (rule );
198120 picOperations .setRules (ruleList );
@@ -210,6 +132,9 @@ public static void addBlindWatermarkToExistImage(COSClient cosClient) {
210132 }
211133 }
212134
135+ /**
136+ * 云上数据处理
137+ */
213138 public static void extractBlindWatermarkFromExistImage (COSClient cosClient ) {
214139 // bucket名需包含appid
215140 // api 请参考:https://cloud.tencent.com/document/product/436/46782
@@ -244,10 +169,7 @@ public static void extractBlindWatermarkFromExistImage(COSClient cosClient) {
244169
245170 public static void main (String [] args ) throws Exception {
246171 COSClient cosClient = ClientUtils .getTestClient ();
247- // addBlindWatermark(cosClient);
248- // extractBlindWatermark(cosClient);
249- addBlindWatermarkToExistImage (cosClient );
250- extractBlindWatermarkFromExistImage (cosClient );
172+ getBlindWatermark (cosClient );
251173 cosClient .shutdown ();
252174 }
253175}
0 commit comments