圖片持久化
更新時間 2025-08-22 15:42:56
最近更新時間: 2025-08-22 15:42:56
分享文章
本文幫助您了解圖片持久化。
操作場景
通過圖片處理接口無法保存處理后的圖片至ZOS,僅生成臨時圖片用于返回,因此ZOS提供了圖片處理持久化的功能,圖片處理持久化可以指定處理后的圖片的保存位置。
具體參數可參考圖片處理參數,通過持久化處理后的圖片,可以更高效的管理訪問桶內圖片資源。
持久化請求可參考SDK文檔中圖片處理Post請求處理圖片部分。
約束與限制
-
權限要求
進行圖片轉存操作時,要求賬號具有源Bucket的GetObject和PutObject權限,以及目標Bucket的PutBucket和目標Object的PutObject權限。
-
存儲位置
原圖所在bucket與持久化圖片轉存的bucket可以相同也可以不同,但必須是同賬號下同地域的桶。
示例
對圖片依次進行縮放、裁剪操作,最后將處理后的圖片持久化至dstBucket桶中。如要進行其他操作,可參考圖片處理參數,并將imageop修改為對應操作字符串。
import?com.amazonaws.ClientConfiguration;??
import?com.amazonaws.auth.AWSCredentials;??
import?com.amazonaws.auth.AWSStaticCredentialsProvider;??
import?com.amazonaws.auth.BasicAWSCredentials;??
import?com.amazonaws.client.builder.AwsClientBuilder;??
import?com.amazonaws.services.s3.AmazonS3;??
import?com.amazonaws.services.s3.AmazonS3ClientBuilder;??
import?com.amazonaws.Protocol;??
import?com.amazonaws.services.s3.model.GetObjectRequest;??
import?com.amazonaws.services.s3.model.ProcessObjectRequest;??
import?com.amazonaws.services.s3.model.S3Object;??
??
import?java.io.*;??
import?java.util.Base64;??
??
public?class?postPicProcess?{??
????public?static?String?ACCESS_KEY?=?"<your-access-key>";??
????public?static?String?SECRET_KEY?=?"<your-secret-key>";??
????public?static?String?END_POINT?=?"<your-endpoint>";??
????public?static?String?srcBucket?=?"<your-srcBucket>";??
????public?static?String?dstBucket?=?"<your-dstBucket>";??
????public?static?String?srcKey?=?"<your-srcKey>";??
????public?static?String?dstKey?=?"<your-dstKey>";??
??
????public?static?void?main(String[]?args)?{??
????????//?聲明s3及桶名,這里換成自己的就好??
????????AmazonS3?s3Client;??
????????try{??
????????????//?當使用HTTPS協議且采用自簽名認證時,需關閉證書檢查??
????????????//?System.setProperty("com.amazonaws.sdk.disableCertChecking",?"true");??
????????????//?使用憑據和配置建立連接??
????????????AWSCredentials?credentials?=?new?BasicAWSCredentials(ACCESS_KEY,?SECRET_KEY);??
????????????ClientConfiguration?awsClientConfig?=?new?ClientConfiguration();??
????????????//?使用V2簽名時,采用"S3SignerType"??
????????????awsClientConfig.setSignerOverride("S3SignerType");??
????????????//?使用V4簽名時,采用"AWSS3V4SignerType"??
????????????//?awsClientConfig.setSignerOverride("AWSS3V4SignerType");??
??
????????????//?連接默認使用HTTPS協議,使用HTTP協議連接時需要顯式指定??
????????????awsClientConfig.setProtocol(Protocol.HTTP);??
????????????s3Client?=?AmazonS3ClientBuilder.standard()??
????????????????????.withCredentials(new?AWSStaticCredentialsProvider(credentials))??
????????????????????.withClientConfiguration(awsClientConfig)??
????????????????????.withEndpointConfiguration(new?AwsClientBuilder.EndpointConfiguration(END_POINT,?""))??
????????????????????.disableChunkedEncoding()??
????????????????????.build();??
??
????????????ProcessObjectRequest?request?=?new?ProcessObjectRequest();??
????????????request.setBucketName(dstBucket);??
????????????request.setKey(dstKey);??
????????????request.setProcessSource(srcBucket?+?"/"?+?srcKey);??
String?imageop?= "image/resize,p_80/crop,w_500,h_500,x_10,y_10"
????????????request.setZosProcess(imageop);??
????????????s3Client.ProcessObject(request);??
????????????System.out.print("=====request?success=====\n");??
????????}catch?(Exception?e)?{??
????????????System.out.print("=====request?fail=====\n");??
????????????System.out.print(e.getMessage());??
????????}??
????}??
}?
代碼執行方式:
javac watermarks.java
java watermarks