使用方式 私有对象 URL格式 通过SDK的generatepresignedurl预签名接口,生成指定对象的getobject访问权限,然后在其生成的URL后面拼接图片处理请求。URL格式为: xzosprocessimage/:固定参数,表示该请求是图片处理相关请求。 action,paramvalue:图片处理的操作(action)、参数(param)和值(value),用于定义图片处理的方式。多个操作以正斜线(/)隔开,操作后的不同参数通过逗号(,)隔开,参数后接下划线()并拼接参数具体的值。ZOS按图片处理参数的顺序处理图片。例如,“image/resize,p30/rotate,90”表示将图片先按比例缩放至原图的30%,再将图片旋转90°。支持的参数,请参见图片处理参数。 示例 awk 上述请求为对bucket桶中的mypic.jpg图片对象进行缩放和旋转操作:首先将图片缩放为500 px500 px,然后再将其旋转180°。 注意 当前拼接请求操作仅支持v2认证方式,v4认证方式拼接URL后会导致请求失败。具体SDK预签名方式参考对应的SDK 通过SDK处理图片 操作场景 您可以通过在SDK中添加参数的方式来处理图片。 示例 以java为例,介绍了图片处理的简单使用方式,更多语言的图片处理SDK请参考开发者文档。 java 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.S3Object; import java.io.; import java.util.Base64; public class picturedemo { // 访问凭证,填写用户的AK与SK public static String ACCESSKEY "ACCESSKEY"; public static String SECRETKEY "SECRETKEY"; // endpoint为控制台域名信息中的终端节点 public static String ENDPOINT "ENDPOINT"; // 填写桶名 public static String BUCKETNAME "BUCKETNAME"; // 填写待操作图片对象完整路径 public static String OBJKEY "OBJKEY"; // 填写处理后图片对象待保存至本地的路径 public static String SAVEPATH "./test.png"; public static void main(String[] args) { AmazonS3 s3Client; // 当使用HTTPS协议且采用自签名认证时,需关闭证书检查 // System.setProperty("com.amazonaws.sdk.disableCertChecking", "true"); // 使用凭据和配置建立连接 AWSCredentials credentials new BasicAWSCredentials(ACCESSKEY, SECRETKEY); 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(ENDPOINT, "")) .disableChunkedEncoding() .build(); GetObjectRequest request new GetObjectRequest(BUCKETNAME, OBJKEY); // 图片处理具体操作,将图片在(10,10)处裁剪300200大小的矩形,再旋转90° String imageop "image/crop,w300,h200,x10,y10/rotate,90"; request.setZosProcess(imageop); S3Object result s3Client.getObject(request); System.out.print("request successn"); // 将下载的图片保存到本地 try { InputStream in result.getObjectContent(); File outputFile new File(SAVEPATH); FileOutputStream outputStream new FileOutputStream(outputFile); byte[] readbuf new byte[1024 1024]; int readlen 0; while ((readlen in.read(readbuf)) > 0) { outputStream.write(readbuf, 0, readlen); } in.close(); outputStream.close(); } catch (IOException e){ e.printStackTrace(); } } }